2011-12-11 13 views
5

यदि आप gitk --all का उपयोग करते हैं, तो आप सभी शाखाओं से अपने रेपो के सभी काम देख सकते हैं। मुझे ऐसा कुछ चाहिए जो केवल किसी दिए गए प्रतिबद्धता के वंशजों को छोड़कर।मैं गिट (या गिटक) के साथ प्रतिबद्धता के सभी वंशजों को कैसे प्राप्त/सूची/देख सकता हूं?

+1

हालांकि मैनोजल्ड्स की पहली वाक्य सही है, यह पूरी सच्चाई नहीं है: यह देखने के लिए कुछ ऐसा करना संभव होगा कि प्रत्येक रेफरी को अपने पूर्वजों में दी गई प्रतिबद्धता है या फिर उन रेफरी से इतिहास प्रदर्शित करें। – Cascabel

+1

संभावित डुप्लिकेट [किसी दिए गए प्रतिबद्धता के सभी बच्चों की सूची प्राप्त करना] (http://stackoverflow.com/questions/2613935/getting-a-list-of-all-children-of-a-given-commit) – jthill

उत्तर

2

एक प्रतिबद्धता केवल अपने माता-पिता (और इसलिए सभी तरह से) के बारे में जानता है लेकिन उसके बच्चों/वंशजों के बारे में कोई जानकारी नहीं है। आपको इसे खोजने के लिए ए..बी जैसे नोटेशन का उपयोग करना होगा।

उदाहरण के लिए

आप के बाद से दिए गए एक प्रतिबद्ध, आप कर सकते हैं कुछ इस तरह वर्तमान शाखा में प्रतिबद्ध खोजना चाहते हैं:

git rev-list A.. 
+1

'gitk --all' किसी भी तरह काम करना चाहिए। ऐसा लगता है कि कम से कम इसे पहले 'gitk --all' पर कोड करना संभव है और फिर प्रत्येक प्रतिबद्धता को छोड़ दें जिसके पास उसके माता-पिता के रूप में कोई प्रतिबद्धता नहीं है। – Pistos

7

मुझे लगता है कि यह है कि तुम क्या चाहते हो सकता है। सभी शाखाओं में सभी कमिट, है कि एक के रूप में पूर्वज:

gitk --all --ancestry-path A.. 
1

संक्षेप में:

git log --all BRANCH~1.. 

विस्तार में, उदाहरण के साथ:

: यह मैं अभी बनाया भंडार की पूरी पेड़ है
$ git log --graph --oneline --decorate --all 
* e3972be (HEAD, a) a-6 
* 2707d79 a-5 
* cdea9a7 a-4 
| * 65b716e (c) c-5 
| * ebe2a0e c-4 
|/ 
| * 2ed9abe (b) b-4 
|/ 
* ace558e (master) 3 
* 20db61f 2 
* 3923af1 1 
--all के अलावा

, एक और बात स्पष्ट है: master ->HEAD:

$ git log --graph --oneline --decorate master.. 
* e3972be (HEAD, a) a-6 
* 2707d79 a-5 
* cdea9a7 a-4 

तो मैं उन्हें संयोजन की कोशिश की है, और यह मुझे लगभग मिला है कि हम क्या चाहते थे:

$ git log --graph --oneline --decorate --all master.. 
* e3972be (HEAD, a) a-6 
* 2707d79 a-5 
* cdea9a7 a-4 
* 65b716e (c) c-5 
* ebe2a0e c-4 
* 2ed9abe (b) b-4 

लेकिन दुर्भाग्य से, यह शाखाओं के बीच संबंधों को प्रदर्शित नहीं करता है, शाखा के बाद से हम पूछ रहे हैं के बारे में छोड़ दिया गया था। इसलिए हम तो जैसे master के माता पिता से लॉग का उपयोग करने के लिए है:

$ git log --graph --oneline --decorate --all master~1.. 
* e3972be (HEAD, a) a-6 
* 2707d79 a-5 
* cdea9a7 a-4 
| * 65b716e (c) c-5 
| * ebe2a0e c-4 
|/ 
| * 2ed9abe (b) b-4 
|/ 
* ace558e (master) 3 

टा-दा! (मुझे नहीं पता कि यह अतीत में काम नहीं करता है, लेकिन बस मामले में: मैं गिट संस्करण 1.7.1 पर हूं)

संपादित करें 2017-11-17 - वास्तव में एसटीडब्ल्यू के लिए धन्यवाद इस के साथ समस्या दिखा रहा है: स्वतंत्र पेड़ इसे गड़बड़ कर देगा। master से पूरी तरह स्वतंत्र हैं जो इस आउटपुट में शामिल किए जाएंगे।

$ git checkout --orphan z 
Switched to a new branch 'z' 
$ git commit --allow-empty -m'z-1' 
[z (root-commit) bc0c0bb] z-1 
$ git commit --allow-empty -m'z-2' 
[z 1183713] z-2 

$ git log --graph --oneline --decorate --all master~1.. 
* 1183713 (HEAD -> z) z-2 
* bc0c0bb z-1 
* 6069f73 (a) a-6 
* 654d106 a-5 
* a218c59 a-4 
| * 338432a (c) c-5 
| * 2115318 c-4 
|/ 
| * 43a34dc (b) b-4 
|/ 
* ce05471 (master) 3 

z शाखा, एक अनाथ के रूप में बनाया जा रहा है, master साथ कोई आम का इतिहास रहा है, इसलिए z-1 और z-2 बाहर रखा गया है चाहिए: ऊपर रेपो की एक प्रति से शुरू, यह क्या मेरा आखिरी आदेश उत्पादन होता है लेकिन नहीं थे। यह --ancestry-path है, अब मुझे मिलता है।भी शामिल है यह शाखा z को बाहर निकाल देगा:

$ git log --graph --oneline --decorate --all --ancestry-path master~1.. 
* 6069f73 (a) a-6 
* 654d106 a-5 
* a218c59 a-4 
| * 338432a (c) c-5 
| * 2115318 c-4 
|/ 
| * 43a34dc (b) b-4 
|/ 
* ce05471 (master) 3 

पूर्णता के लिए, यहां तक ​​कि यह देखते हुए कि यह पहले से ही --ancestry-path था, वर्तमान शीर्ष जवाब सही ढंग से शाखा संबंध प्रदर्शित नहीं करता है, क्योंकि यह शामिल नहीं master पर ही प्रतिबद्ध:

$ git log --graph --oneline --decorate --all --ancestry-path master.. 
* 6069f73 (a) a-6 
* 654d106 a-5 
* a218c59 a-4 
* 338432a (c) c-5 
* 2115318 c-4 
* 43a34dc (b) b-4 
+0

मैंने इस बदलाव के साथ झुकाव करने की कोशिश की, लेकिन ऐसा लगता है कि मैं जो चाहता हूं उसे दिखाता हूं [गिट के साथ]। उदाहरण के लिए, मान लें कि आपने मध्यस्थ बाल शाखा बनाई है, और वहां से 3 पोते-पोतों की शाखाएं बनाई गई हैं। शाखाओं के उस परिवार के लिए गिटक दिखाने का तरीका क्या होगा, और कोई भी मास्टर, या कुछ और नहीं? – Pistos

+0

@Pistos तो उपर्युक्त का उपयोग करते हुए, मुझे 'gitk' में 'log' के रूप में एक ही आउटपुट मिलता है जब मैं' gitk --all master..' का उपयोग करता हूं (जैसा कि 'गिट लॉग --all मास्टर ~ 1.. के विपरीत है - तो, मास्टर के अलावा किसी अन्य शाखा का उपयोग करने के लिए, 'gitk --all branchname..' (दो बिंदुओं को शामिल करें) – Izkata

+0

@ पिस्टोस I को अब भी ध्यान दें कि मेरी टिप्पणी लगभग जेएसवीएनएम के उत्तर के समान ही समाप्त हो गई है, सिवाय इसके कि मैं' टी - कोनेस्ट्री-पथ 'को समझ में नहीं आता है और यह आवश्यक क्यों होगा – Izkata

संबंधित मुद्दे

 संबंधित मुद्दे