गेट लॉग में सभी शाखाएं (लेकिन स्टैच नहीं) दिखाते हैं


84

मेरे पास एक Git उर्फ ​​है जो विस्तृत है:

git log --graph --oneline --all --decorate

के अनुसार man git logकुछ संदिग्ध विकल्प हैं: --notऔर --branches; लेकिन मैं इसे ठीक से काम नहीं कर सकता।

स्टैड्स को छिपाने के लिए मुझे कैसे संपादित करना चाहिए?


FYI करें : स्वीकृत प्रश्न और टिप्पणी के अनुसार मेरा .gitconfigउपनाम अब इस तरह दिखता है:

[alias]
    l = log --branches --remotes --tags --graph --oneline --decorate --notes HEAD

जवाबों:


125

ऐसा करने के बजाय --allऔर फिर छलनी को छानने की कोशिश करना, उन्हें पहले स्थान पर शामिल न करें:

git log --branches --remotes --tags --graph --oneline --decorate

मुख्य समस्या जो उन्हें बाद में फ़िल्टर करने की कोशिश करने से उत्पन्न होती है, यदि यह है कि अगर उस शाखा पर नवीनतम कमिटमेंट है (क्योंकि भले ही यह headशाखा का नहीं है , यह अभी भी इसका सबसे हालिया वंश है), यह वास्तव में फ़िल्टर कर सकता है लॉग से पूरी शाखा, जो आप नहीं चाहते हैं।


2
महान! मैं --tagsपूर्णता के लिए जोड़ूंगा।
cYrus

मुझे संदेह होगा कि --tagsकोई भी टैग कभी भी headशाखा या रिमोट का वंशज नहीं होना चाहिए , हालांकि मैंने इसे सत्यापित नहीं किया है।
एंड्रयू मार्शल

3
बस यह कोशिश की git checkout -b test:; एक प्रतिबद्ध जोड़ा; git tag foo; git checkout master; git branch -D test। टैग वहाँ है, लेकिन यह बिना दिखाया नहीं जाएगा --tags
साइरस

2
एक छोटा जोड़ - आपको HEADअंत तक जोड़ना चाहिए । अन्यथा, यदि आप एचआईएडी मोड में बंद हैं और कोई अन्य एचईएडी प्रतिबद्ध नहीं है, तो आप इसे ग्राफ में नहीं देखेंगे।
1936 को mziwisky

6

मेरा उपनाम:

[alias]
    l = log --oneline --decorate --graph --exclude=refs/stash

इस स्थिति में आप स्टाॅप दिखाए बिना इन फॉर्म का उपयोग कर सकेंगे:

  • git l वर्तमान शाखा के लिए
  • git l feature234 एक विशिष्ट शाखा के लिए
  • git l --all समग्र इतिहास के लिए

मैनुअल से:

--exclude = <glob pattern>

उन मेलों को शामिल न करें जो अगले --all, --branches, --tags, --remotes, या --glob अन्यथा विचार करेंगे।


4
ध्यान दें कि मापदंडों का क्रम मायने रखता है: --all --exclude=refs/stashइसमें अभी भी स्टैश शामिल --exclude=refs/stash --allहोगा , जबकि इसे सही ढंग से बाहर रखा जाएगा।
मिखाइल बर्शितेन

4

ध्यान दें कि एंड्रयू का जवाब StGit 1 को छिपाने के लिए काम नहीं करेगा ।) शाखाएं <branch>.stgit(StGit संस्करण 0.15 से) जो अन्यथा आउटपुट को बेकार कर देती हैं।

वर्तमान में मैं निम्नलिखित समाधान का उपयोग करता हूं:

$ git log --graph --oneline --decorate \
  $(git for-each-ref --format="%(refname)" refs/heads/ refs/remotes/ |
    grep -v "\.stgit$")

1.) StGit ( " सेंट acked Git ") प्रदान करता है रजाई / MQ - Git में कार्यक्षमता की तरह (यानी एक ढेर से धक्का / पॉपिंग पैच करने के लिए /)।


का उपयोग करने पर विचार करें --exclude। जैसे:git log --graph --exclude=refs/heads/*.stgit --exclude=refs/patches/* --exclude=refs/stash --all
गवेंको
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.