गिट पुल-rebase और गिट पुल --ff-only के बीच अंतर


102

मान लीजिए कि मैंने origin/masterकमिट किया A--B--Cऔर मैंने local/masterकमिट किया A--B--D

अगर मैं उपयोग git pull --rebaseकरूँ तो क्या होगा ?

अगर मैं उपयोग git pull --ff-onlyकरूँ तो क्या होगा ?

क्या परिणामी पेड़ में कोई अंतर है?

जवाबों:


126

अगर मैं git पुल --rebase का उपयोग करूँ तो क्या होगा?

git pull --rebase के बराबर है

git fetch
git rebase origin/master

यानी Cस्थानीय परिवर्तनों ( D) से पहले आपके दूरस्थ परिवर्तन ( ) लागू किए जाएंगे , जिसके परिणामस्वरूप निम्नलिखित पेड़ होंगे

A -- B -- C -- D

अगर मैं git पुल --ff-only का उपयोग करूँ तो क्या होगा?

यह विफल हो जाएगा।

git pull --ff-only से मेल खाती है

git fetch
git merge --ff-only origin/master

--ff-onlyदूरस्थ परिवर्तनों को तभी लागू करता है जब वे तेजी से अग्रेषित किए जा सकें। आदमी से:

एक गैर-शून्य स्थिति के साथ विलय करने और बाहर निकलने से इनकार करें जब तक कि वर्तमान HEAD पहले से अद्यतित न हो या विलय तेजी से आगे के रूप में हल किया जा सके

चूँकि आपकी स्थानीय और दूरस्थ शाखाओं ने मोड़ दिया है, इसलिए वे एक तेज़-फ़ॉरवर्ड द्वारा हल नहीं किए जा सकते और git pull --ff-onlyविफल हो जाएंगे।


यदि Dस्थानीय परिवर्तन में कोई प्रतिबद्धता नहीं है तो क्या होगा ? क्या दोनों कमांड समतुल्य होंगे?
निको

7
हां, वे दोनों में परिणाम होगा A--B--C
गेब्रियल पेट्रोनेला

क्या करेगा git pull --rebase --ff-only? (यह मानते हुए कि C & D हैं)
रेफेल एकरमैन

2
IIRC theffff केवल विकल्प को नजरअंदाज कर दिया जाता है जब --rebase
गेब्रियल पेट्रोनेला

5
यदि आप एक रैखिक इतिहास की गारंटी देना चाहते हैं तो @BreakingBenjamin यह उपयोगी है। डिफ़ॉल्ट रूप से pullमर्ज कमिट परिचय कर सकते हैं, जबकि आप केवल रिबास और एफएफ के साथ काम करना पसंद कर सकते हैं।
गैब्रियल पेट्रोनेला
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.