एक और प्रश्न कहा git pull
जाता है जैसे git fetch
+ git merge
।
लेकिन git pull
वीएस git fetch
+ के बीच अंतर क्या है git rebase
?
एक और प्रश्न कहा git pull
जाता है जैसे git fetch
+ git merge
।
लेकिन git pull
वीएस git fetch
+ के बीच अंतर क्या है git rebase
?
जवाबों:
यह अपने प्रश्न से बहुत स्पष्ट होना चाहिए कि आप वास्तव में सिर्फ बीच अंतर के बारे में पूछ रहे हैं git merge
और git rebase
।
तो मान लीजिए कि आप सामान्य स्थिति में हैं - आपने अपनी मास्टर शाखा में कुछ काम किया है, और आप मूल से खींचते हैं, जिसने कुछ काम भी किया है। लाने के बाद, चीजें इस तरह दिखती हैं:
- o - o - o - H - A - B - C (master)
\
P - Q - R (origin/master)
यदि आप इस बिंदु (git पुल के डिफ़ॉल्ट व्यवहार) में विलय करते हैं, तो यह मानते हुए कि कोई संघर्ष नहीं है, आप इसके साथ समाप्त होते हैं:
- o - o - o - H - A - B - C - X (master)
\ /
P - Q - R --- (origin/master)
यदि दूसरी ओर आपने उचित छूट दी है, तो आप इसे समाप्त कर देंगे:
- o - o - o - H - P - Q - R - A' - B' - C' (master)
|
(origin/master)
आपके काम के पेड़ की सामग्री दोनों मामलों में समान होनी चाहिए; आपने अभी तक एक अलग इतिहास बनाया है । रिबेस आपके इतिहास को फिर से लिखता है, जिससे यह पता चलता है कि आपने मूल नई मास्टर शाखा ( R
) के शीर्ष पर जहां आपने मूल रूप से प्रतिबद्ध किया था (के बजाय H
)। आपको कभी भी रिबास दृष्टिकोण का उपयोग नहीं करना चाहिए अगर किसी और ने आपकी मास्टर शाखा से पहले ही खींच लिया हो।
अंत में, ध्यान दें कि आप वास्तव git pull
में दिए गए ब्रांच के लिए सेट कर सकते हैं, ताकि विन्यास पैरामीटर branch.<name>.rebase
को सही पर सेट करके मर्ज के बजाय रिबेज का उपयोग किया जा सके। आप एकल पुल का उपयोग करके भी ऐसा कर सकते हैं git pull --rebase
।
git pull
दौड़ने जैसा है तो git fetch
तब git merge
git pull --rebase
जैसा हैgit fetch
git rebase
git pull
a git fetch
+ की तरह है git merge
।
"इसके डिफ़ॉल्ट मोड में, FETCH_HEAD के
git fetch
बाद git पुल शॉर्टहैंड हैgit merge
" अधिक सटीक रूप से, दिए गए मापदंडों के साथgit pull
चलता हैgit fetch
और फिरgit merge
प्राप्त शाखा प्रमुखों को वर्तमान शाखा में विलय करने के लिए कॉल करता है "
(रेफरी: https://git-scm.com/docs/git-pull )
'लेकिन git pull
वीएस git fetch
+ के बीच क्या अंतर है git rebase
'
फिर से, उसी स्रोत से:
git pull --rebase
"ब्रेबेज़ के साथ, यह git मर्ज के बजाय git rebase चलाता है।"
' merge
और rebase
' के बीच का अंतर
इसका उत्तर यहां भी दिया गया है:
https://git-scm.com/book/en/v2/Git-Branching-Rebasing
(जिस तरह से संस्करण इतिहास दर्ज किया गया है उसे बदलने के बीच का अंतर)
git fetch + git rebase
अब से काम करने के तरीके को समझता हूं । अब से हमारे git ट्री पर कोई कम या ज्यादा संघर्ष नहीं है :)