सीधे एक शाखा में किए गए कमिट दिखाते हुए, Git में विलय को अनदेखा करते हैं


86

गिट का उपयोग करते समय, क्या एक शाखा के लिए किए गए कमिट्स को दिखाने का एक तरीका है, जबकि विलय के द्वारा लाए गए सभी कमिट्स को अनदेखा करना?

मैं एक शाखा पर किए गए कोड परिवर्तनों की समीक्षा करने की कोशिश कर रहा हूं, जबकि हम अन्य शाखाओं पर किए गए लोगों की अनदेखी कर रहे हैं। मुझे पता है कि यह उस फैशन में एक अंतर दिखाने के लिए असंभव के करीब है, लेकिन मैं सक्षम होना चाहता हूं। पता करें कि मुझे कौन सी समीक्षा करने की आवश्यकता है।

जवाबों:


123

--no-merges

दोनों माता-पिता का कई संदर्भों में समान वजन होता है। यदि आप हमेशा अन्य परिवर्तनों को मर्ज करने में सुसंगत रहे हैं, तो आप पा सकते हैं कि यह आपको वही देता है जो आप चाहते हैं।

git log --no-merges --first-parent

अन्यथा आप अन्य नामित शाखाओं से कमिट्स को बाहर करने में सक्षम हो सकते हैं।

git log --no-merges ^other-branch-1 ^other-branch-2 ^other-branch-3

यदि आप उन परिवर्तनों की समीक्षा करना चाहते हैं जिन्हें आप एक मुख्य शाखा में वापस मर्ज करने जा रहे हैं, तो सबसे आसान काम स्थानीय क्लोन पर मर्ज करना है और फिर मर्ज प्रकाशित करने से पहले पहले माता-पिता के साथ अंतर को देखें।


यह पहला कमांड "उचित शाखा-प्रति-सुविधा" ( plus.google.com/109096274754593704906/posts/R4qkeyRadLR ) में उत्कृष्ट है
एडम डाइमिट्रुक

1
ऐसा लगता है कि जैसे मैं उस शाखा से ज्यादातर काम करता हूं, लेकिन यह अभी भी वह दिखा रहा है जो मास्टर से खींचा गया था। हमारी इतनी शाखाएँ हैं कि दूसरों को छोड़कर अव्यवहारिक होगा।
चैनल कैट

@ChannelCat दूसरे पर अपनी शाखा को फिर से क्यों नहीं डालेंगे, तो सभी कमिट्स अंत में होंगे?
मार्क इनग्राम

7

आप इसके लिए उपयोग कर सकते हैं git cherry, यह आपको उन कमिट्स का पता लगाएगा, जो अभी तक अपस्ट्रीम में मर्ज नहीं हुए थे, या एक ही ब्रांच में हैं, लेकिन दूसरे पर नहीं। तो "आपकी शाखा" और "मास्टर" नाम की दो शाखाएँ दी गई हैं:

git cherry -v your-branch master

आपके पैच आईडी की तुलना में आपको कमिट्स की सूची प्रस्तुत करेगा:

+ c3e441bf4759d4aa698b4a413f1f03368206e82f Updated Readme
- 2a9b2f5ab1fdb9ee0a630e62ca7aebbebd77f9a7 Fixed formatting
+ e037c1d90b812af27dce6ed11d2db9454a6a74c2 Corrected spelling mistake

आप देख सकते हैं कि "-" के द्वारा उपसर्ग करने वाले लोग दोनों शाखाओं में दिखाई देते हैं, जबकि "+" के साथ उपसर्ग केवल आपकी शाखा पर उपलब्ध हैं।

एक विकल्प के रूप में आप उपयोग कर सकते हैं:

git log --pretty=format:"%h %s" your-branch..master --no-merges

जो आपको "आपकी शाखा" पर किए गए कामों की सूची दिखाएगा जो अभी तक "मास्टर" पर मौजूद नहीं हैं


जैसा कि आपके उत्तर को संपादित करने की मेरी कोशिश को अस्वीकार कर दिया गया था, मैं इसे यहाँ पोस्ट करूँगा: आपकी अंतिम गिट लाइन में, शाखाओं के नामों के बीच, तीन डॉट्स होने चाहिए, दो नहीं। इस तरह: आपकी शाखा ... मास्टर
वेदरनम

@ देवता आपको 3 डॉट्स की आवश्यकता नहीं है, केवल दो ... हालांकि 3 उसी तरह से काम करता है जैसे 2 काम करता है।
ज़्ज़च ...

4

एक बहुत ही आसान तरीका:

git log --graph --oneline --no-merges thebranch|grep '^\*'

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.