Git में शाखा टोपोलॉजी की कल्पना


882

मैं अपनी मशीन पर आइसोलेशन में खेल रहा हूं, और मुझे अपनी सभी शाखाओं और कमानों के मानसिक मॉडल को बनाए रखना मुश्किल लगता है। मुझे पता है कि मैं git logप्रतिबद्ध इतिहास को देखने के लिए कर सकता हूं जहां से मैं हूं, लेकिन क्या पूरी शाखा स्थलाकृति को देखने का एक तरीका है, इन एएससीआईआई मानचित्रों की तरह कुछ ऐसा है जो शाखाओं को समझाने के लिए हर जगह उपयोग किया जाता है?

      .-A---M---N---O---P
     /     /   /   /   /
    I     B   C   D   E
     \   /   /   /   /
      `-------------'

ऐसा लगता है कि किसी के साथ आने और मेरी रिपॉजिटरी को चुनने की कोशिश करने से वास्तव में काम करने में कठिनाई होगी।

मुझे लगता है मैं AccuRev के से प्रभावित कर रहा हूँ धारा ब्राउज़र ...



1
@ leif81, मेरे लिए एक आधा-नकल। @ मासी ने अपने सवाल में स्पष्ट रूप से गिट्ट को बाहर रखा।
बेंजोल २ Ben

जवाबों:


1080

का प्रयोग करें git log --graphया gitk। (दोनों भी स्वीकार करते हैं --all, जो केवल वर्तमान के बजाय सभी शाखाओं को दिखाएगा।)

शाखा के नाम और एक कॉम्पैक्ट दृश्य के लिए, प्रयास करें:

git log --graph --decorate --oneline

46
यह शाखाओं के साथ आवागमन को भी लेबल नहीं करता है। मैं इसे एक अच्छा दृश्य नहीं कहूंगा।
रोमन स्टार्कोव

7
धन्यवाद! gitg में --allविकल्प भी है और कमिट भी लेबल है। मैंने कभी भी ड्रॉपडाउन में नहीं देखा कि आप वहां सभी शाखाओं का चयन कर सकते हैं।
थॉमस

210
मैं सुझाता हूं git log --graph --decorate --oneline- प्रति पंक्ति एक प्रतिबद्ध दिखाता है, और शाखा नामों से सजाता है।
Sleske

8
tig (एक ncurse git क्लाइंट) भी --allविकल्प प्रदान करता है । काफी आसान!
पियरे-एड्रियन ब्यूसन

5
विकल्प के बारे में एंड्रयू द्वारा जवाब भी देखें --simplify-by-decoration
रुविम

482

मैं आमतौर पर उपयोग करता हूं

git log --graph --full-history --all --pretty=format:"%h%x09%d%x20%s"

रंगों के साथ (यदि आपका खोल बैश है):

git log --graph --full-history --all --color \
        --pretty=format:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s"

यह इस तरह से पाठ-आधारित प्रतिनिधित्व को मुद्रित करेगा:

* 040cc7c       (HEAD, master) Manual is NOT built by default
* a29ceb7       Removed offensive binary file that was compiled on my machine and was hence incompatible with other machines.
| * 901c7dd     (cvc3) cvc3 now configured before building
| * d9e8b5e     More sane Yices SMT solver caller
| | * 5b98a10   (nullvars) All uninitialized variables get zero inits
| |/
| * 1cad874     CFLAGS for cvc3 to work successfully
| *   1579581   Merge branch 'llvm-inv' into cvc3
| |\
| | * a9a246b   nostaticalias option
| | * 73b91cc   Comment about aliases.
| | * 001b20a   Prints number of iteration and node.
| |/
|/|
| * 39d2638     Included header files to cvc3 sources
| * 266023b     Added cvc3 to blast infrastructure.
| * ac9eb10     Initial sources of cvc3-1.5
|/
* d642f88       Option -aliasstat, by default stats are suppressed

(आप बस उपयोग कर सकते हैं git log --format=oneline, लेकिन यह संख्याओं के लिए प्रतिबद्ध संदेशों को टाई करेगा, जो कम सुंदर IMHO दिखता है)।

इस आदेश के लिए एक शॉर्टकट बनाने के लिए, आप अपनी ~/.gitconfigफ़ाइल को संपादित करना चाह सकते हैं :

[alias]
  gr = log --graph --full-history --all --color --pretty=tformat:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s%x20%x1b[33m(%an)%x1b[0m"

हालाँकि, टिप्पणियों में सॉडील द वोसिफोरस नोट्स के रूप में, इस तरह के लंबे प्रारूपण आदेश को याद रखना कठिन है। आमतौर पर, यह कोई समस्या नहीं है क्योंकि आप इसे ~/.gitconfigफ़ाइल में डाल सकते हैं । हालाँकि, यदि आपको कभी-कभी किसी दूरस्थ मशीन में लॉग इन करना पड़ता है जहाँ आप कॉन्फ़िगर फ़ाइल को संशोधित नहीं कर सकते हैं, तो आप टाइप करने के लिए अधिक सरल लेकिन तेज़ का उपयोग कर सकते हैं:

git log --graph --oneline

10
अगर आपको तारीखें पसंद हैं: git log --graph --full-history --all --color --date = short --pretty = format: "% X1b [31m% h% x09% X1b [32m% d% X1b] 0 मी% x20% विज्ञापन% s "
सेहुग

7
--ऑनलाइन उन सभी के लिए एक अधिक यादगार विकल्प है जो सुंदर-जादुई स्वरूप का निर्माण करते हैं।
डैनियल राल्स्टन

1
@SodeltheVociferous, वास्तव में, मैं उस समस्या से संपर्क नहीं कर पाया, जिसके बारे में आप बात करते हैं; मैंने अपने उत्तर का विस्तार किया।
पी शेव्ड 28'11

2
नोट: --full-historyकेवल --simplify-by-decorationएक फ़ाइलपथ का उपयोग या निर्दिष्ट करते समय प्रासंगिक है ।
स्लिप डी। थॉम्पसन

2
क्या मैं पूछ सकता हूं कि आपको प्रारूप स्ट्रिंग कहां से मिली है? या पृथ्वी पर आपने उस चीज़ को कैसे माना है?
इलियटवेज़ऑफ़

442

मेरे पास 3 उपनाम (और त्वरित उपयोग के लिए 4 उपनाम-उपनाम) हैं जो मैं आमतौर पर अपनी ~/.gitconfigफ़ाइल में फेंकता हूं :

[alias]
    lg = lg1
    lg1 = lg1-specific --all
    lg2 = lg2-specific --all
    lg3 = lg3-specific --all

    lg1-specific = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(auto)%d%C(reset)'
    lg2-specific = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(auto)%d%C(reset)%n''          %C(white)%s%C(reset) %C(dim white)- %an%C(reset)'
    lg3-specific = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset) %C(bold cyan)(committed: %cD)%C(reset) %C(auto)%d%C(reset)%n''          %C(white)%s%C(reset)%n''          %C(dim white)- %an <%ae> %C(reset) %C(dim white)(committer: %cn <%ce>)%C(reset)'

git lg/ git lg1इस तरह दिखता है:

git lg1

git lg2 इस तरह दिखता है:

git lg2

और git lg3इस तरह दिखता है:

git lg3

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

  1. उन्हें अपने में जोड़ें .gitconfig,
  2. अपनी पसंद के अनुसार कस्टमाइज़ करें (अलग-अलग रंग विकल्प, 2- और 3-लाइन संस्करण के लिए अलग-अलग लाइन की व्यवस्था, आदि)।
  3. और फिर एक कॉपी को एक जिस्ट या अन्य कोड स्निपेट टूल में सहेजें ताकि आप इसे .gitconfigभविष्य में कॉपी कर सकें (या वैकल्पिक रूप से अपने डॉटफ़ाइल्स को नियंत्रित कर सकें, निश्चित रूप से संस्करण)

नोट: उत्तर से नकल और कम से जवाब पर सुधार stackoverflow.com/questions/1057564/pretty-git-branch-graphs यह कहीं अधिक उपयुक्त है, क्योंकि यहां की तुलना में यह नहीं था। ऐतिहासिक कारणों से दूसरे प्रश्न पर कॉपी छोड़ दें- यह अब बंद हो गया है, और अन्य उत्तरों के एक समूह द्वारा उत्तर का संदर्भ दिया गया है।


10
सुझाव: की जगह %C(bold yellow)के साथ %C(auto)के लिए अलग अलग रंग होने के लिए HEAD, स्थानीय और दूरस्थ शाखाओं ( रेफरी )।
Atcold

2
ध्यान दें कि आप मैन्युअल रूप से उपयोग करके अपने प्रारूप स्ट्रिंग में इंडेंटेशन जोड़ने से बच सकते हैं %w(); इस तरह से आप ग्राफ को गड़बड़ाने के बिना लंबी-लंबी या बहु-पंक्ति प्रतिबद्ध संदेशों को ठीक से लिख सकते हैं।
चार्लीग्रीन

1
@ mbadawi23 वे मंच और गिट प्रतिष्ठानों में स्थिरता के लिए निरर्थक हैं। --abbrev-commitवहाँ है क्योंकि 2nd-3rd लाइनें रिक्त स्थान के साथ हाथ से लिप्त हैं, और मैं पूरी तरह से सुनिश्चित करना चाहता था कि यह शॉर्ट SHA का उपयोग करेगा- इसलिए सॉरी से बेहतर सुरक्षित है। --decorateवहाँ भी है क्योंकि यद्यपि गिट के चूक एक ही काम करते हैं, जो कि अलग-अलग गिट संस्करणों में अलग-अलग या अलग-अलग कॉन्फ़िगर हो सकते हैं- इन के लिए, मैं बिल्कुल सजावट चाहता हूं। अंततः, अतिरिक्त / निरर्थक झंडे यहां खराब नहीं हैं - यह एक फ़ाइल में जाता है; यह कुछ ऐसा नहीं है जो आप हर समय टाइप करते हैं।
स्लिप डी। थॉम्पसन

1
@TimothyPulliam प्रत्येक शाखा के अंत में, जो प्रत्येक शाखा / टैग की नोक का प्रतिनिधित्व करता है, आप कोष्ठक में संबंधित शाखा / टैग नाम देखेंगे- जैसे lg1& lg2स्क्रीनशॉट में आप (origin/test_on_10.8)दूरस्थ शाखा दिखा सकते हैं , और lg2स्क्रीनशॉट में आप कर सकते हैं शाखा के (HEAD -> master, origin/master, origin/HEAD)स्थानीय और दूरस्थ दोनों स्थितियों को दिखाते हुए देखें । यह मेल करता है कि Git do (gitk, SourceTree, TortoiseGit, Tower, Fork, GitX) के लिए लोकप्रिय शाखा-GUI उपकरण क्या हैं, हालाँकि थोड़ा और अधिक वर्बोसिटी (कुछ GUI उपकरण रंग-कोडिंग का उपयोग करते हैं) के साथmasterHEAD
स्लिप डी। थॉम्पसन

2
@TimothyPulliam यह समझने के लिए कि "प्रत्येक शाखा का हिस्सा" क्या है, आपको नेत्रहीन रूप से रंगीन रेखा का पता लगाना होगा। लगभग हर उपकरण इससे आपको बहुत मदद नहीं करता है क्योंकि Git के आंतरिक रूप से किसी भी शाखा से संबंधित नहीं हैं- वे निहित हैं (ग्राफ़-विज़ुअलाइज़ेशन-समय पर) किसी भी शाखा या टैग से संबंधित हैं जो उनके माता-पिता के वंश में हैं । यदि कोई शाखा / टैग एक कमेंट का संदर्भ नहीं देता है और यह गायब हो जाता है (लेकिन लगभग 2 सप्ताह तक कचरा एकत्र नहीं किया जाता है); पहले से अप्रकाशित कमिट को संदर्भित करते हुए एक शाखा / टैग जोड़ें और यह फिर से प्रकट होता है। मुझे उम्मीद है कि यह सब समझ में आता है।
स्लिप डी। थॉम्पसन

235

इनमें से किसी भी रेसिपी (git log या gitk पर आधारित) में, आप जोड़ सकते हैं --simplify-by-decoration इतिहास के अबाधित रेखीय भागों को ढहने के लिए । यह एक ही बार में दिखाई देने वाली टोपोलॉजी को अधिक बनाता है। मैं अब बड़े इतिहास को समझ सकता हूं जो इस विकल्प के बिना समझ से बाहर होगा!

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


3
परफेक्ट - बिल्कुल वही जिसकी मुझे तलाश थी! इसे अधिक उत्थान प्राप्त करना चाहिए; लगभग हर कोई पहले से ही gitk / gitg / git log --graph के बारे में जानता है, लेकिन यदि आप शाखा टोपोलॉजी की कल्पना करना चाहते हैं और सिंगल कमिट्स की परवाह नहीं करते हैं, तो वे बहुत उपयोगी नहीं हैं।
imolit

4
यह वही है जो मुझे चाहिए था, शानदार। यह केवल एक चीज है जिसने मेरी मदद की, सभी उत्तरों में से। --simplify-by-decorationयह स्पष्ट करता है कि क्या चल रहा है।
एला .२ Jul२

9
यह वास्तव में उत्तर होना चाहिए। git log --graph --all --simplify-by-decorationसाथ ही काम करता है।
इरफि

यदि केवल हम --simplify-by-decorationप्रत्येक कमिटेड कमिट (जैसे -Bऔर के -Aलिए grep) से पहले n कमिट्स जोड़ते समय उपयोग कर सकते हैं ।
जून

76

Gitk मेरे पढ़ने के लिए कुछ समय दर्दनाक।

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

मुझे GitVersionTree लिखने के लिए प्रेरित करें ।

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


3
@exhuma मैं एक लेखक है जिसमें मोनू का समर्थन करने के लिए लेखक हैं (मोनो 10 के खिलाफ उबंटू 13.10 पर परीक्षण किया गया)
मैक्स एर्लिच

1
मैंने पाया है कि GitVersionTree समय के साथ एक ही स्थान पर शाखाएँ रखता है, जिससे यह देखना आसान हो जाता है कि चीजें कैसे बदलती हैं।
sfranky

48

मेरे समय का 99.999% इतिहास देख रहा है git lgऔर 0.001% द्वारा git log

मैं केवल दो लॉग उपनाम साझा करना चाहता हूं जो उपयोगी हो सकते हैं (.conconfig से कॉन्फ़िगर करें):

[Alias]
     lg = log --graph --pretty=format:'%Cred%h%Creset %ad %s %C(yellow)%d%Creset %C(bold blue)<%an>%Creset' --date=short
     hist = log --graph --full-history --all --pretty=format:'%Cred%h%Creset %ad %s %C(yellow)%d%Creset %C(bold blue)<%an>%Creset' --date=short
  • git lg वर्तमान शाखा के इतिहास को देखेंगे।
  • git hist पूरी शाखा का इतिहास देखेंगे।

44

Gitkraken पर एक नज़र डालें - एक क्रॉस-प्लेटफ़ॉर्म GUI जो टोपोलॉजी को एक आकर्षक तरीके से दिखाता है।

टोपोलॉजी

यहाँ कुछ उन्नत सुविधाओं पर एक त्वरित वीडियो ट्यूटोरियल है।


6
इस धागे में GitKraken कैसे है, लेकिन इसमें पुराना और मुफ्त SourceTree नहीं है? (मुझे पता है, मुझे पता है, एटलसियन को हमेशा सबकुछ सही नहीं मिलता है। लेकिन सोर्सट्री विज़ुअलाइज़ करने के लिए एक बहुत अच्छा उपकरण है।)
XML

43

मुझे git logऐसा करना पसंद है:

 git log --graph --oneline --branches

(साथ ही - दूरदराज की शाखाओं को भी देखने के लिए)

हाल ही में रिलीज के साथ काम करता है: 1.6.3 ( 7 मई 2009 के बाद से शुरू )

  • " --pretty=<style>" कमांड के लॉग परिवार के लिए विकल्प अब " --format=<style>" के रूप में लिखा जा सकता है ।
    इसके अलावा, के --format=%formatstringलिए एक छोटा हाथ है --pretty=tformat:%formatstring

  • "" --oneline"का पर्यायवाची है --pretty=oneline --abbrev-commit"।

PS D:\git\tests\finalRepo> git log --graph --oneline --branches --all
* 4919b68 a second bug10 fix
* 3469e13 a first bug10 fix
* dbcc7aa a first legacy evolution
| * 55aac85 another main evol
| | * 47e6ee1 a second bug10 fix
| | * 8183707 a first bug10 fix
| |/
| * e727105 a second evol for 2.0
| * 473d44e a main evol
|/
* b68c1f5 first evol, for making 1.0

आप लॉग प्रदर्शन की अवधि (कमिट की संख्या) भी सीमित कर सकते हैं:

PS D:\git\tests\finalRepo> git log --graph --oneline --branches --all -5
* 4919b68 a second bug10 fix
* 3469e13 a first bug10 fix
* dbcc7aa a first legacy evolution
| * 55aac85 another main evol
| | * 47e6ee1 a second bug10 fix

(केवल अंतिम 5 हिट दिखाएं)


वर्तमान चयनित समाधान के बारे में मुझे क्या पसंद नहीं है:

 git log --graph

यह बहुत अधिक जानकारी प्रदर्शित करता है (जब मैं केवल एक त्वरित सारांश देखना चाहता हूं):

PS D:\git\tests\finalRepo> git log --graph
* commit 4919b681db93df82ead7ba6190eca6a49a9d82e7
| Author: VonC <vonc@laposte.net>
| Date:   Sat Nov 14 13:42:20 2009 +0100
|
|     a second bug10 fix
|
* commit 3469e13f8d0fadeac5fcb6f388aca69497fd08a9
| Author: VonC <vonc@laposte.net>
| Date:   Sat Nov 14 13:41:50 2009 +0100
|
|     a first bug10 fix
|

gitk महान है, लेकिन मुझे एक और विंडो के लिए शेल सत्र छोड़ने के लिए मजबूर करता है, जबकि अंतिम एन कमिट्स को जल्दी से प्रदर्शित करना अक्सर पर्याप्त होता है।


मैं इस विधि को भी चुनता हूं, लेकिन मैंने एक उपनाम बनाया है ताकि "git ग्राफ" टाइप करना "git log --graph --decorate --online" को निष्पादित करने के समान है।
विल पाइक

@ConnerPike अच्छा विचार है। मेरे पास खुद उर्फ ​​'lg' है: देखें stackoverflow.com/a/3667139/6309
VonC

35

Gitg , OS X के लिए Gitx के समान, Linux के लिए एक बढ़िया उपकरण है। बस अपने रिपॉजिटरी के ट्री स्ट्रक्चर (gitx के साथ समान) के अंदर कहीं से कमांड लाइन पर 'gitg' चलाएं।


3
इतने सारे शब्दों में: gitg में एक ड्रॉप-डाउन मेनू है जहां कोई भी कल्पना करने के लिए किस शाखा को चुन सकता है। इस ड्रॉप-डाउन में एक "ऑल" विकल्प भी है।
फुल्क्स

1
या आप इसे शुरू कर सकते हैं gitg --all, यदि आप ड्रॉप डाउन मेनू में चारों ओर घूमने से बचना चाहते हैं।
imolit

25

मुझे "git-big-picture" काफी उपयोगी लगा: https://github.com/esc/git-big-picture

इसके बजाय रैखिक, "वन-आयामी" विचारों वाले गिटक और दोस्तों के उत्पादन के लिए डॉट / ग्राफविज़ का उपयोग करके यह बहुत अच्छा 2 डी ग्राफ़ बनाता है। -I विकल्प के साथ यह शाखा बिंदुओं को दर्शाता है और मर्ज करता है, लेकिन सब कुछ बीच में छोड़ देता है।


उपयोग करने के लिए काफी सरल है, अगर आपके पास बहुत कुछ नहीं है और एक सरल समाधान चाहते हैं, तो शायद एक कोशिश हो सकती है।
समझदार

इसे कमिट्स की संख्या के साथ ठीक होना चाहिए (यदि आप -i का उपयोग करते हैं), तो यह अपठनीय हो सकता है यदि आपके पास शाखाओं और मर्जों को जटिल करना है (लेकिन तब, जो उपकरण नहीं है)
फ्रैंक ओस्टरफेल्ड

1
मध्यम पैमाने की हमारी परियोजना के साथ, यह टन के साथ बहुत बड़ी तस्वीर बनाता है। क्या मैं इसमें जाने वाली गहराई को सीमित कर सकता हूं? यानी पिछले एन दिनों से या तो।
ओन्ड्रा kaयूका

25

एक अच्छा वेब आधारित उपकरण है ungit । यह किसी भी प्लेटफ़ॉर्म पर चलता है जो नोड.जेएस और गिट सपोर्ट करता है। वहाँ एक वीडियो है कि यह उन लोगों के लिए कैसे काम करता है जो चीजों को पढ़ने की तुलना में आसान पाते हैं ...

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


21

ब्रांचमास्टर पर एक नजर ।

मैंने इसे जटिल शाखा संरचना की कल्पना करने के लिए लिखा था, एक ही पंक्ति में उन दोनों के बीच टकराव को ध्वस्त करके। संख्याएँ कमिट की संख्या को इंगित करती हैं।

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


1
यह मैं क्या देख रहा हूँ क्या ऐसा करने के लिए वैकल्पिक आदेश / उपकरण हैं?
एलेक्सी गाबी

3
@AalexGabi इसे अपने gitconfig में डालें, यह वही काम करता है, लेकिन कमांड लाइन में gbranch = log --graph --simplify-by-सजावट-pretty = स्वरूप: '% C (पीला)% h% C (सफेद)% d% C (बोल्ड ब्लैक)% ar% C (रीसेट)% n '
लंबा

आप शाखाओं की कल्पना करने के लिए डेटा कैसे प्राप्त कर रहे हैं?
स्नोफिश

15

किसी ने उल्लेख नहीं किया tig ? यह "ब्रांचमास्टर" जैसी शाखाओं को मोड़ता नहीं है, लेकिन ...

यह तेज़ है, टर्मिनल में चलता है।

क्योंकि यह बहुत जल्दी है (+ कीबोर्ड कंट्रोल) आपको एक शानदार UX मिलता है, यह लगभग lsgit रिपॉजिटरी वाली निर्देशिकाओं के लिए मेरे " " जैसा है।

https://jonas.github.io/tig/

इसमें सामान्य शॉर्टकट हैं, /खोज करने के लिए, आदि।

रिवीजन का ग्राफ

(ps। यह इस स्क्रीनशॉट की पृष्ठभूमि में टर्मिनल है, यह आजकल बेहतर दिखता है, लेकिन मेरा कंप्यूटर स्क्रीनशॉट लेने से इनकार करता है, क्षमा करें)

(pps। मैं gitkraken का भी उपयोग करता हूं और इसमें वास्तव में स्पष्ट दृश्य हैं, लेकिन यह इससे कहीं अधिक भारी है tig)


मैं एक टर्मिनल प्रेमी और टाइग (Git के लिए पाठ-मोड इंटरफ़ेस) Git रिपॉजिटरी के साथ बातचीत करने के लिए अच्छा उपकरण हूं, यह ग्राफ दृश्य और Git इतिहास सहित बहुत उपयोगी है। मैं इसे टर्मिनल प्रेमियों को Git कमांड लाइन के लिए एक अतिरिक्त टूल के रूप में सुझाता हूं।
hermeslm

15

कछुआ गिट में "संशोधन ग्राफ़" नामक एक उपकरण है। यदि आप विंडोज पर हैं तो यह आपके रेपो -> कछुआ चाल -> संशोधन ग्राफ पर राइट क्लिक के रूप में आसान है।


1
लंबे समय से कछुआ गिट का उपयोग करते हुए एक शानदार विशेषता, लेकिन इस सुविधा को नहीं जानते हैं।
कृतिक

यह सरल तरीका है। धन्यवाद।
अनूप

15

टमटम वास्तव में अच्छा ग्राफ खींचता है।


ऐसा नहीं करता है Grittle , अगर आप का उपयोग OmniGraffle
न्यू सिकन्दरिया

इसकी कोशिश की और मुझे प्रति पंक्ति एक रेखा दिखाई देती है, न कि प्रति शाखा / टैग। दर्जनों शाखाएँ / टैग होने पर यह बहुत विस्तृत है।
एलेक्सी गाबी

12

मैं निम्नलिखित उपनामों का उपयोग करता हूं।

[alias]
    lol = log --graph --decorate --pretty=oneline --abbrev-commit
    lola = log --graph --decorate --pretty=oneline --abbrev-commit --all

यह रंग योजना में अधिक जानकारी है जो मैंने ऊपर देखा था। यह भी काफी सामान्य प्रतीत होता है, इसलिए आपके पास अन्य वातावरण में विद्यमान इसका एक मौका हो सकता है या इसे समझाने के बिना बातचीत में इसका उल्लेख करने में सक्षम हो सकता है।

स्क्रीनशॉट और पूर्ण विवरण के साथ यहां: http://blog.kfish.org/2010/04/git-lola.html


12

मैक उपयोगकर्ताओं के लिए, चेकआउट (बिना किसी उद्देश्य के) मुफ्त, खुला स्रोत उपकरण GitUp: http://gitup.co/

मैं जिस तरह से ग्राफ प्रदर्शित करता हूं, वह मेरे द्वारा देखे गए कुछ अन्य उपकरणों की तुलना में स्पष्ट है।

परियोजना यहां है: https://github.com/git-up/GitUp

GitUp स्क्रीनशॉट


यह एकमात्र ग्राफ है जहां आप x अक्ष पर शाखाओं और y अक्ष पर समय देखते हैं। यह बहुत सहज है। GitUp बिलकुल कमाल का है! macOS किसी भी अधिक नहीं है, इसलिए मैं विंडोज़ पर स्विच कर रहा हूं और बहुत व्यर्थ गिटअप को याद करूंगा।
w00t

11

ग्राफ इतिहास को देखने के लिए मेरे पास यह git logउपनाम है ~/.gitconfig:

[alias]
l = log --all --graph --pretty=format:'%C(auto)%h%C(auto)%d %s %C(dim white)(%aN, %ar)'

जगह में उर्फ ​​के साथ, git lकुछ इस तरह दिखाएगा:

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

Git 2.12 + में आप log.graphColorsकॉन्फ़िगरेशन विकल्प का उपयोग करके ग्राफ़ के लाइन रंगों को भी अनुकूलित कर सकते हैं ।

लॉग के प्रारूप के लिए, यह लेखक के नाम (सम्मान ) और संबंधित लेखक की तारीख--oneline के अलावा के समान है । ध्यान दें कि वाक्यविन्यास, जो Git को प्रतिबद्ध हैश आदि के लिए डिफ़ॉल्ट रंगों का उपयोग करने के लिए कहता है, Git> = 1.8.3 में समर्थित है ।.mailmap%C(auto)


1
यह बहुत पहली बार है जब मैं realtive लेखक की तारीख देख रहा हूँ और यह बहुत अच्छा है! धन्यवाद, मैं अपने gitconfig में जोड़ दूंगा!
शमौन सी।

विंडोज़ के उपयोगकर्ताओं को एकल उद्धरणों को डबल कोट्स
पियरडीपी

11

मुझे यह ब्लॉग पोस्ट मिला जो संक्षिप्त तरीका दिखाता है:

git log --oneline --abbrev-commit --all --graph --decorate --color

मैं आमतौर पर उपरोक्त आदेश के लिए एक उपनाम बनाता हूं:

alias gl='git log --oneline --abbrev-commit --all --graph --decorate --color'

और सरल बस का उपयोग करें gl

आप उपनाम को git config में भी जोड़ सकते हैं। ~/.gitconfigनिम्नलिखित लाइन को [उपनाम] खोलें और जोड़ें

[alias]
        lg = log --oneline --abbrev-commit --all --graph --decorate --color

और इसे इस तरह उपयोग करें: git lg


8

.Itconfig के माध्यम से मेरा व्यक्तिगत पसंदीदा उपनाम है:

graph = log --graph --color --all --pretty=format:"%C(yellow)%H%C(green)%d%C(reset)%n%x20%cd%n%x20%cn%x20(%ce)%n%x20%s%n"

6
एक छोटी सी व्याख्या जो कमांड की तरह दिखती है वह बहुत अच्छी रही होगी।
अधिकतम

8

VSCode पाठ संपादक का उपयोग करने वालों के लिए , डी। जयमन द्वारा जीआईटी इतिहास विस्तार पर विचार करें :

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


मेरी राय में यह विस्तार थोड़े धीमा है। यह ऑटो अपडेट भी नहीं करता है और अनप्लिकेटेड दिखता है। लेकिन यह एक अच्छा काम करता है प्रतिबद्ध पेड़ की कल्पना ...
aljazerzen

2
विजुअल स्टूडियो कोड के लिए एक और विस्तार है मिच द्वारा गीट ग्राफ । मैं इसका उपयोग GitLens के साथ करता हूं।
जोसेफ.बी

7

अगर आप OS X पर होते हैं तो Gitx भी एक शानदार विज़ुअलाइज़ेशन टूल है।


3
gitk (सभी के लिए) समान है। बिल्कुल वैसा ही नहीं, लेकिन बहुत समान।
Xero

Gitx के दोहे हैं - यह एक (रोवाँज) इस समय सबसे अच्छा लगता है।
rjmunro

7

एक और गिट लॉग कमांड। साथ यह एक निश्चित-चौड़ाई कॉलम :

git log --graph --pretty=format:"%x09%h | %<(10,trunc)%cd |%<(25,trunc)%d | %s" --date=short


3

विंडोज पर एक बहुत उपयोगी उपकरण है जिसका आप उपयोग कर सकते हैं: गिट एक्सटेंशन। यह एक gui टूल है और git ऑपरेशंस को बहुत आसान बनाता है।

इसके अलावा यह खुला है।

http://gitextensions.github.io


2

मैंने कोशिश की है, --simplify-by-decorationलेकिन मेरे सभी मर्ज नहीं दिखाए गए हैं। इसलिए मैं इसके बजाय हेडर पर कोई "\" और "/" प्रतीकों के साथ लाइनों को prune करता हूं, जबकि हमेशा लाइनों को "" के साथ रखा जाता है ("उसके तुरंत बाद शाखाओं का संकेत देता है। शाखा इतिहास दिखाते समय मैं सामान्य रूप से प्रतिबद्ध टिप्पणियों में निर्लिप्त हूं।" मैं उन्हें भी हटा देता हूं। मैं निम्नलिखित शैल उर्फ ​​के साथ समाप्त होता हूं।

gbh () { 
    git log --graph --oneline --decorate "$@" | grep '^[^0-9a-f]*[\\/][^0-9a-f]*\( [0-9a-f]\|$\)\|^[^0-9a-f]*[0-9a-f]*\ (' | sed -e 's/).*/)/'
}

2

क्या हम इसे और अधिक जटिल बना सकते हैं?

कैसे के बारे में सरल git लॉग --all --decorate --online --graph (एक कुत्ता याद रखें = - सभी --Decorate --ऑनलाइन -ग्राफ)


1
यह स्वीकृत उत्तर के समान है। हालाँकि
महामारी के

1

Git आधिकारिक साइट ने कुछ तृतीय पक्ष प्लेटफ़ॉर्म विशिष्ट GUI उपकरण सूचीबद्ध किए। लिनक्स प्लेटफ़ॉर्म के लिए जीआईटीआई उपकरण हिट करें

मैं का इस्तेमाल किया है gitgऔर GitKrakenलिनक्स मंच के लिए। दोनों को कमिट ट्री समझने में अच्छा लगता है

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