गिट पुल-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.