Git: इस शाखा पर कैसे सूचीबद्ध किया जाए, लेकिन विलयित शाखाओं से नहीं


90

मान लीजिए कि आपका git कमिटमेंट इतिहास इस तरह दिखता है:

A---B---C---D---E---F master
     \         /
      X---Y---Z topic

क्या मास्टर, वायुसेना पर केवल कमिट सूची होना संभव है? दूसरे शब्दों में, अगर कमेट एक मर्ज-इन ब्रांच पर था, तो मैं यह नहीं दिखाना चाहता।


2
तो, कैसे की जो पता Git हैं Dऔर Zमर्ज किए गए शाखा का हिस्सा था?
रोमेन

2
जब मास्टर से विलय किया जाता है, तो पिछले मास्टर कमिट्स मर्ज में पहले माता-पिता होते हैं। git logकेवल उन लोगों को प्रदर्शित करने की अनुमति देता है --first-parent, जिससे आपको सही सामान मिलता है
चार्ल्सबी

जवाबों:


133

git logविकल्प है --first-parent, तो आपको topicइतिहास नहीं मिलेगा ।

जब मर्ज किया जाता है master, तो masterमर्ज में पहले माता-पिता होते हैं। गेट लॉग केवल उन लोगों को प्रदर्शित करने की अनुमति देता है, जिनके साथ-प्यास-माता-पिता हैं, इसलिए आपको सही सामान मिलता है।


25
+1 --first-parentकरता है :) --no-mergesआपके साथ संयुक्त मर्ज कमिट छिपा सकते हैं
c00kiemon5ter

मैंने उत्थान किया, लेकिन यह मेरे जवाब की तुलना में अभी भी अत्यधिक लगता है
अप्डम

22

TLDR : git log origin/master --no-mergesआपको मास्टर का लॉग देगा और किसी भी मर्ज किए गए कमिट को बाहर करेगा (इस मामले में x, y, z)

मूल अंक

इसके बारे में जाने का एक और सामान्य तरीका है जो इस बात पर भरोसा नहीं करता है कि --first-parentकुछ स्थितियों में सहायक होगा .. शाखा बहिष्करण फ़िल्टर का उपयोग करके

git log origin/topic ^origin/master यह आपको हटाए गए origin/topicसभी कमानों के साथ एक लॉग देगा origin/master

आप यह भी जोड़ सकते हैं --no-mergesजिसमें मर्ज कमिट छिपाएंगे जो आप चाहते हैं या नहीं कर सकते हैं।

एक और आसान टिप का उपयोग shortlogकरना है, logजिसके बजाय आपको एक संक्षिप्त सारांश दिया जाएगा जो एक शाखा में जारी नोट्स, या व्हाट्स के संचार के लिए आसान हो सकता है।

अपडेट
यह पढ़ने के बाद, आप वास्तव में जो मैंने पोस्ट किया था उसका उलटा चाहते हैं; हालाँकि यह मास्टर और फू ( git log origin/master ^origin/foo) पर होने वाली हर चीज़ को छोड़कर खत्म हो जाएगा । हालाँकि आप यह भी प्राप्त कर सकते हैं कि आप क्या मांगते हैं (सभी कमिट्स जो कि विलय का हिस्सा हैं) के साथgit log origin/master --no-merges


0

चार्ल्स द्वारा उत्तर मेरे लिए काम करता है।

git log has option --first-parent --no-merges, so you won't get topic history.

लेकिन अगर आप अपनी Git गतिविधियों के लिए किसी भी ग्राफिक यूजर इंटरफेस का उपयोग कर रहे हैं, जैसे Git Extension, SourceTree, Tortoise Git,

फिर आपके उपकरणों में पहले माता-पिता की जांच करने के लिए प्रत्यक्ष विकल्प हैं। मैंने इस उत्तर को सूची में जोड़ने के लिए सोचा क्योंकि अधिकांश लोग ग्राफिक इंटरफ़ेस को आसान पाते हैं। और आप सीधे चेरी को उस विशेष शाखा से उपकरण से सभी कमिट्स चुन सकते हैं, यदि आवश्यक हो।

मैंने दो टूल का उदाहरण संलग्न किया है, यह अन्य उपकरणों के लिए भी समान होगा: [मैंने उपयोगकर्ता नाम, git रेपो नाम को ब्लर कर दिया है क्योंकि यह एक निजी रिपॉजिटरी है, लेकिन फिर भी आप एक विचार प्राप्त कर सकते हैं कि पहले माता-पिता को टूल से कैसे उपयोग करें ]

  1. Git एक्सटेंशन
    • गेट एक्सटेंशन खोलें -> उस सुविधा शाखा को चेकआउट करें जिसे आप कमिट्स देखना चाहते हैं, पहले विकल्प के रूप में चयन करने का विकल्प है:

यहाँ छवि विवरण दर्ज करें

  1. कछुआ गिट
    • रिपॉजिटरी फ़ोल्डर खोलें -> कछुआ गिट से शो लॉग पर क्लिक करें -> शाखा की जाँच करें और छवि में दिखाए गए पहले कमिट का चयन करें

यहाँ छवि विवरण दर्ज करें


-3

क्या यह काम नहीं करता है?

git log master
git log --stat master

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