2014-09-01 10 views
13

आदेश गिट लॉग-पी, गिट शो, और गिट diff संबंधित कैसे हैं और किसी का उपयोग दूसरे पर क्यों किया जाएगा?गिट लॉग-पी बनाम गिट शो बनाम गिट diff

निम्नलिखित 4 प्रतिबद्ध के साथ एक रेपो को देखते हुए:

commitd - पिछले प्रतिबद्ध
commitc
commitb
coomita - प्रारंभिक प्रतिबद्ध

क्या निम्नलिखित Git आदेशों के बीच मतभेद हैं ?:

git log -p commitb commitd 
git show commitb commitd 
git diff commitb commitd 

git log -p commitd commitb 
git show commitd commitb 
git diff commitd commitb 

git log -p commitb..commitd 
git show commitb..commitd 
git diff commitb..commitd 

git log -p commitd..commitb 
git show commitd..commitb 
git diff commitd..commitb 

git log -p commitb...commitd 
git show commitb...commitd 
git diff commitb...commitd 

git log -p commitd...commitb 
git show commitd...commitb 
git diff commitd...commitb 
+0

मैं कई टर्मिनल खिड़कियों को खोल दिया और सभी आदेशों भाग गया, लेकिन मैं किसी भी सामान्यीकरण इस संदर्भ बनाया आकर्षित नहीं कर सकता:


यहाँ उत्पादन भंडार आप अपने मूल प्रश्न में तैनात है। कुछ दिनों के लिए इसे अपने आप समझने की कोशिश करने के बाद और मेरे google-fu के साथ कोई भाग्य नहीं मैंने सोचा कि मुझे कुछ याद आना चाहिए इसलिए मैंने यहां प्रश्न पोस्ट किया। –

+1

देखें [gitrevisions दस्तावेज़ीकरण] (https://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html)। यदि आप ग्राफ सिद्धांत के बारे में कुछ जानते हैं, तो इसे बहुत मदद करनी चाहिए; यदि नहीं, तो यह काफी अपारदर्शी हो सकता है। साथ ही, ऐसा लगता है कि kernel.org मैन पेज (जो मैं लिंक कर रहा हूं) पुराना हो रहा है ... – torek

+1

@torek उत्कृष्ट संदर्भ के लिए धन्यवाद। मैं वास्तव में यह जानने के बाहर ग्राफ सिद्धांत को नहीं समझता कि गिट एक डीएजी का उपयोग करता है, लेकिन मैं चाहता हूं कि शुरुआती संसाधनों के बारे में अधिक जानकारी के विवरण के साथ शुरू किया जाए क्योंकि मुझे 100% आत्मविश्वास महसूस नहीं होता है, मुझे पता है कि मेरे दैनिक में क्या करना है गिट के साथ बातचीत हालांकि मैं मूल बातें कुछ बार अब से गुजर चुका हूं। –

उत्तर

20

git log A B दोनों का इतिहास A और B (मूल रूप से प्रत्येक प्रतिबद्धता के इतिहास का एक संघ सेट उत्पन्न करता है) का इतिहास दिखाता है। आमतौर पर आप git log A..B चाहते हैं, जिसे git log ^B A के रूप में भी लिखा जा सकता है (बी से सब कुछ पहुंचने योग्य दिखाएं, लेकिन (^) बी से)। यह रेंज भी खाली हो सकती है (उदाहरण के लिए B..A खाली होगा, क्योंकि B से पहुंचने वाली प्रत्येक प्रतिबद्धता A से भी पहुंच योग्य है)। इसलिए, आपको "गलत" तर्कों के साथ उपयोग किए जाने पर git log से कोई आउटपुट भी नहीं मिलता है।

git show एक बहुत बहुमुखी कमांड है और इसके तर्कों के आधार पर विभिन्न आउटपुट उत्पन्न करता है। आप एक या कई प्रतिबद्धताओं को पारित कर सकते हैं और यह आपको प्रतिबद्ध जानकारी (लेखकत्व, टाइमस्टैम्प, प्रतिबद्ध संदेश, पिछले प्रतिबद्धता से भिन्न) दिखाएगा। a..d जैसी कमेटी श्रेणियां हल की जाएंगी और प्रत्येक प्रतिबद्धता व्यक्तिगत रूप से दिखाई देगी। आप एक मार्ग भी पारित कर सकते हैं और git show आपको फ़ाइल की सामग्री दिखाएगा। आप वाक्यविन्यास commit:path/to/file के साथ एक निश्चित संशोधन पर एक फ़ाइल भी निर्दिष्ट कर सकते हैं। यदि आप एक निर्देशिका पास करते हैं, तो git show उस निर्देशिका को बदलने वाली अंतिम प्रतिबद्धता की प्रतिबद्ध जानकारी प्रदर्शित करेगा।

git diff आमतौर पर दो पेड़ों या दो फ़ाइलों की तुलना करने की अपेक्षा करता है। (यह कोई तर्क भी नहीं ले सकता है और इसके बजाय इंडेक्स/स्टेजिंग क्षेत्र की तुलना कर सकता है)। एक प्रतिबद्धता अपने संबंधित पेड़ में अनचाहे है (एक वृक्ष वस्तु भंडार की एक निश्चित स्थिति का वर्णन करती है)। वाक्य रचना A..B चुपचाप diff मामले के लिए A B को हल हो गई है और प्रतिबद्ध से/पेड़ AB

रेंज A...B का मतलब के लिए प्राप्त करने के लिए आवश्यक परिवर्तन भी दिखाई देंगे "हर ए या बी से पहुँच के लिए प्रतिबद्ध है, लेकिन नहीं दोनों से"।

  • जब git log के साथ प्रयोग किया यह आप उन करता दिखाई देगा और जब अलग हुए शाखाओं के साथ इस्तेमाल किया यह ज्यादातर केवल समझ में आता है, उदाहरण के लिए "शो हर कि दोनों के बीच अलग है, लेकिन उन करता है जो दोनों शाखाओं में क्या समानता है छिपाने"।
  • git diff के लिए इस वाक्य git diff $(git merge-base A B) B के लिए, यानी "भिन्नताएं A के इतिहास के बाद से B में परिवर्तन वाक्यात्मक चीनी है। git show के साथ आप बस प्रत्येक एकल के लिए जानकारी के लिए प्रतिबद्ध हो जाएगी उस श्रेणी में प्रतिबद्ध

अगर कुछ भी अस्पष्ट है तो मुझे टिप्पणियों में बताएं।

$ git init 
Initialized empty Git repository in ... 
$ cd SO 
$ ls 
$ echo a > a 
$ git add a 
$ git commit 
[master (root-commit) 7b66fe5] initial commit 
1 file changed, 1 insertion(+) 
create mode 100644 a 
$ git tag a 
$ echo b >> a 
$ echo b > b 
$ git add a b 
$ git commit 
[master ee884fe] commit b 
2 files changed, 2 insertions(+) 
create mode 100644 b 
$ git tag b 
$ echo c >> a 
$ echo c >> b 
$ echo c > c 
$ git add a b c 
$ git commit 
[master 8abaaff] commit c 
3 files changed, 3 insertions(+) 
create mode 100644 c 
$ git tag c 
$ echo d >> a 
$ echo d > b 
$ git add a b 
$ git commit 
[master 08adc85] commit d 
2 files changed, 2 insertions(+), 2 deletions(-) 
$ git tag d 
$ git log -p b d -- 
commit 08adc8512e63588e6f01533b2a0f762342521b05 
Author: ... 
Date: Mon Sep 1 17:22:06 2014 +0200 

    commit d 

diff --git a/a b/a 
index de98044..d68dd40 100644 
--- a/a 
+++ b/a 
@@ -1,3 +1,4 @@ 
a 
b 
c 
+d 
diff --git a/b b/b 
index 9ddeb5c..4bcfe98 100644 
--- a/b 
+++ b/b 
@@ -1,2 +1 @@ 
-b 
-c 
+d 

commit 8abaaff681be0bcaa16c946feb2989959348c9f4 
Author: ... 
Date: Mon Sep 1 17:21:40 2014 +0200 

    commit c 

diff --git a/a b/a 
index 422c2b7..de98044 100644 
--- a/a 
+++ b/a 
@@ -1,2 +1,3 @@ 
a 
b 
+c 
diff --git a/b b/b 
index 6178079..9ddeb5c 100644 
--- a/b 
+++ b/b 
@@ -1 +1,2 @@ 
b 
+c 
diff --git a/c b/c 
new file mode 100644 
index 0000000..f2ad6c7 
--- /dev/null 
+++ b/c 
@@ -0,0 +1 @@ 
+c 

commit ee884fea5d0266280845348175ac0af5083a9bbf 
Author: ... 
Date: Mon Sep 1 17:21:05 2014 +0200 

    commit b 

diff --git a/a b/a 
index 7898192..422c2b7 100644 
--- a/a 
+++ b/a 
@@ -1 +1,2 @@ 
a 
+b 
diff --git a/b b/b 
new file mode 100644 
index 0000000..6178079 
--- /dev/null 
+++ b/b 
@@ -0,0 +1 @@ 
+b 

commit 7b66fe5999039c53ffbe5a5ffe07c13a5c213455 
Author: ... 
Date: Mon Sep 1 17:20:39 2014 +0200 

    initial commit 

diff --git a/a b/a 
new file mode 100644 
index 0000000..7898192 
--- /dev/null 
+++ b/a 
@@ -0,0 +1 @@ 
+a 
$ git show b d -- 
commit ee884fea5d0266280845348175ac0af5083a9bbf 
Author: ... 
Date: Mon Sep 1 17:21:05 2014 +0200 

    commit b 

diff --git a/a b/a 
index 7898192..422c2b7 100644 
--- a/a 
+++ b/a 
@@ -1 +1,2 @@ 
a 
+b 
diff --git a/b b/b 
new file mode 100644 
index 0000000..6178079 
--- /dev/null 
+++ b/b 
@@ -0,0 +1 @@ 
+b 

commit 08adc8512e63588e6f01533b2a0f762342521b05 
Author: ... 
Date: Mon Sep 1 17:22:06 2014 +0200 

    commit d 

diff --git a/a b/a 
index de98044..d68dd40 100644 
--- a/a 
+++ b/a 
@@ -1,3 +1,4 @@ 
a 
b 
c 
+d 
diff --git a/b b/b 
index 9ddeb5c..4bcfe98 100644 
--- a/b 
+++ b/b 
@@ -1,2 +1 @@ 
-b 
-c 
+d 
$ git diff b d -- 
diff --git a/a b/a 
index 422c2b7..d68dd40 100644 
--- a/a 
+++ b/a 
@@ -1,2 +1,4 @@ 
a 
b 
+c 
+d 
diff --git a/b b/b 
index 6178079..4bcfe98 100644 
--- a/b 
+++ b/b 
@@ -1 +1 @@ 
-b 
+d 
diff --git a/c b/c 
new file mode 100644 
index 0000000..f2ad6c7 
--- /dev/null 
+++ b/c 
@@ -0,0 +1 @@ 
+c 
$ git log -p d b -- 
commit 08adc8512e63588e6f01533b2a0f762342521b05 
Author: ... 
Date: Mon Sep 1 17:22:06 2014 +0200 

    commit d 

diff --git a/a b/a 
index de98044..d68dd40 100644 
--- a/a 
+++ b/a 
@@ -1,3 +1,4 @@ 
a 
b 
c 
+d 
diff --git a/b b/b 
index 9ddeb5c..4bcfe98 100644 
--- a/b 
+++ b/b 
@@ -1,2 +1 @@ 
-b 
-c 
+d 

commit 8abaaff681be0bcaa16c946feb2989959348c9f4 
Author: ... 
Date: Mon Sep 1 17:21:40 2014 +0200 

    commit c 

diff --git a/a b/a 
index 422c2b7..de98044 100644 
--- a/a 
+++ b/a 
@@ -1,2 +1,3 @@ 
a 
b 
+c 
diff --git a/b b/b 
index 6178079..9ddeb5c 100644 
--- a/b 
+++ b/b 
@@ -1 +1,2 @@ 
b 
+c 
diff --git a/c b/c 
new file mode 100644 
index 0000000..f2ad6c7 
--- /dev/null 
+++ b/c 
@@ -0,0 +1 @@ 
+c 

commit ee884fea5d0266280845348175ac0af5083a9bbf 
Author: ... 
Date: Mon Sep 1 17:21:05 2014 +0200 

    commit b 

diff --git a/a b/a 
index 7898192..422c2b7 100644 
--- a/a 
+++ b/a 
@@ -1 +1,2 @@ 
a 
+b 
diff --git a/b b/b 
new file mode 100644 
index 0000000..6178079 
--- /dev/null 
+++ b/b 
@@ -0,0 +1 @@ 
+b 

commit 7b66fe5999039c53ffbe5a5ffe07c13a5c213455 
Author: ... 
Date: Mon Sep 1 17:20:39 2014 +0200 

    initial commit 

diff --git a/a b/a 
new file mode 100644 
index 0000000..7898192 
--- /dev/null 
+++ b/a 
@@ -0,0 +1 @@ 
+a 
$ git show d b -- 
commit 08adc8512e63588e6f01533b2a0f762342521b05 
Author: ... 
Date: Mon Sep 1 17:22:06 2014 +0200 

    commit d 

diff --git a/a b/a 
index de98044..d68dd40 100644 
--- a/a 
+++ b/a 
@@ -1,3 +1,4 @@ 
a 
b 
c 
+d 
diff --git a/b b/b 
index 9ddeb5c..4bcfe98 100644 
--- a/b 
+++ b/b 
@@ -1,2 +1 @@ 
-b 
-c 
+d 

commit ee884fea5d0266280845348175ac0af5083a9bbf 
Author: ... 
Date: Mon Sep 1 17:21:05 2014 +0200 

    commit b 

diff --git a/a b/a 
index 7898192..422c2b7 100644 
--- a/a 
+++ b/a 
@@ -1 +1,2 @@ 
a 
+b 
diff --git a/b b/b 
new file mode 100644 
index 0000000..6178079 
--- /dev/null 
+++ b/b 
@@ -0,0 +1 @@ 
+b 
$ git diff d b -- 
diff --git a/a b/a 
index d68dd40..422c2b7 100644 
--- a/a 
+++ b/a 
@@ -1,4 +1,2 @@ 
a 
b 
-c 
-d 
diff --git a/b b/b 
index 4bcfe98..6178079 100644 
--- a/b 
+++ b/b 
@@ -1 +1 @@ 
-d 
+b 
diff --git a/c b/c 
deleted file mode 100644 
index f2ad6c7..0000000 
--- a/c 
+++ /dev/null 
@@ -1 +0,0 @@ 
-c 
$ git log -p b..d -- 
commit 08adc8512e63588e6f01533b2a0f762342521b05 
Author: ... 
Date: Mon Sep 1 17:22:06 2014 +0200 

    commit d 

diff --git a/a b/a 
index de98044..d68dd40 100644 
--- a/a 
+++ b/a 
@@ -1,3 +1,4 @@ 
a 
b 
c 
+d 
diff --git a/b b/b 
index 9ddeb5c..4bcfe98 100644 
--- a/b 
+++ b/b 
@@ -1,2 +1 @@ 
-b 
-c 
+d 

commit 8abaaff681be0bcaa16c946feb2989959348c9f4 
Author: ... 
Date: Mon Sep 1 17:21:40 2014 +0200 

    commit c 

diff --git a/a b/a 
index 422c2b7..de98044 100644 
--- a/a 
+++ b/a 
@@ -1,2 +1,3 @@ 
a 
b 
+c 
diff --git a/b b/b 
index 6178079..9ddeb5c 100644 
--- a/b 
+++ b/b 
@@ -1 +1,2 @@ 
b 
+c 
diff --git a/c b/c 
new file mode 100644 
index 0000000..f2ad6c7 
--- /dev/null 
+++ b/c 
@@ -0,0 +1 @@ 
+c 
$ git show b..d -- 
commit 08adc8512e63588e6f01533b2a0f762342521b05 
Author: ... 
Date: Mon Sep 1 17:22:06 2014 +0200 

    commit d 

diff --git a/a b/a 
index de98044..d68dd40 100644 
--- a/a 
+++ b/a 
@@ -1,3 +1,4 @@ 
a 
b 
c 
+d 
diff --git a/b b/b 
index 9ddeb5c..4bcfe98 100644 
--- a/b 
+++ b/b 
@@ -1,2 +1 @@ 
-b 
-c 
+d 

commit 8abaaff681be0bcaa16c946feb2989959348c9f4 
Author: ... 
Date: Mon Sep 1 17:21:40 2014 +0200 

    commit c 

diff --git a/a b/a 
index 422c2b7..de98044 100644 
--- a/a 
+++ b/a 
@@ -1,2 +1,3 @@ 
a 
b 
+c 
diff --git a/b b/b 
index 6178079..9ddeb5c 100644 
--- a/b 
+++ b/b 
@@ -1 +1,2 @@ 
b 
+c 
diff --git a/c b/c 
new file mode 100644 
index 0000000..f2ad6c7 
--- /dev/null 
+++ b/c 
@@ -0,0 +1 @@ 
+c 
$ git diff b..d -- 
diff --git a/a b/a 
index 422c2b7..d68dd40 100644 
--- a/a 
+++ b/a 
@@ -1,2 +1,4 @@ 
a 
b 
+c 
+d 
diff --git a/b b/b 
index 6178079..4bcfe98 100644 
--- a/b 
+++ b/b 
@@ -1 +1 @@ 
-b 
+d 
diff --git a/c b/c 
new file mode 100644 
index 0000000..f2ad6c7 
--- /dev/null 
+++ b/c 
@@ -0,0 +1 @@ 
+c 
$ git log -p d..b -- 
$ git show d..b -- 
$ git diff d..b -- 
diff --git a/a b/a 
index d68dd40..422c2b7 100644 
--- a/a 
+++ b/a 
@@ -1,4 +1,2 @@ 
a 
b 
-c 
-d 
diff --git a/b b/b 
index 4bcfe98..6178079 100644 
--- a/b 
+++ b/b 
@@ -1 +1 @@ 
-d 
+b 
diff --git a/c b/c 
deleted file mode 100644 
index f2ad6c7..0000000 
--- a/c 
+++ /dev/null 
@@ -1 +0,0 @@ 
-c 
$ git log -p b...d -- 
commit 08adc8512e63588e6f01533b2a0f762342521b05 
Author: ... 
Date: Mon Sep 1 17:22:06 2014 +0200 

    commit d 

diff --git a/a b/a 
index de98044..d68dd40 100644 
--- a/a 
+++ b/a 
@@ -1,3 +1,4 @@ 
a 
b 
c 
+d 
diff --git a/b b/b 
index 9ddeb5c..4bcfe98 100644 
--- a/b 
+++ b/b 
@@ -1,2 +1 @@ 
-b 
-c 
+d 

commit 8abaaff681be0bcaa16c946feb2989959348c9f4 
Author: ... 
Date: Mon Sep 1 17:21:40 2014 +0200 

    commit c 

diff --git a/a b/a 
index 422c2b7..de98044 100644 
--- a/a 
+++ b/a 
@@ -1,2 +1,3 @@ 
a 
b 
+c 
diff --git a/b b/b 
index 6178079..9ddeb5c 100644 
--- a/b 
+++ b/b 
@@ -1 +1,2 @@ 
b 
+c 
diff --git a/c b/c 
new file mode 100644 
index 0000000..f2ad6c7 
--- /dev/null 
+++ b/c 
@@ -0,0 +1 @@ 
+c 
$ git show b...d -- 
commit 08adc8512e63588e6f01533b2a0f762342521b05 
Author: ... 
Date: Mon Sep 1 17:22:06 2014 +0200 

    commit d 

diff --git a/a b/a 
index de98044..d68dd40 100644 
--- a/a 
+++ b/a 
@@ -1,3 +1,4 @@ 
a 
b 
c 
+d 
diff --git a/b b/b 
index 9ddeb5c..4bcfe98 100644 
--- a/b 
+++ b/b 
@@ -1,2 +1 @@ 
-b 
-c 
+d 

commit 8abaaff681be0bcaa16c946feb2989959348c9f4 
Author: ... 
Date: Mon Sep 1 17:21:40 2014 +0200 

    commit c 

diff --git a/a b/a 
index 422c2b7..de98044 100644 
--- a/a 
+++ b/a 
@@ -1,2 +1,3 @@ 
a 
b 
+c 
diff --git a/b b/b 
index 6178079..9ddeb5c 100644 
--- a/b 
+++ b/b 
@@ -1 +1,2 @@ 
b 
+c 
diff --git a/c b/c 
new file mode 100644 
index 0000000..f2ad6c7 
--- /dev/null 
+++ b/c 
@@ -0,0 +1 @@ 
+c 
$ git diff b...d -- 
diff --git a/a b/a 
index 422c2b7..d68dd40 100644 
--- a/a 
+++ b/a 
@@ -1,2 +1,4 @@ 
a 
b 
+c 
+d 
diff --git a/b b/b 
index 6178079..4bcfe98 100644 
--- a/b 
+++ b/b 
@@ -1 +1 @@ 
-b 
+d 
diff --git a/c b/c 
new file mode 100644 
index 0000000..f2ad6c7 
--- /dev/null 
+++ b/c 
@@ -0,0 +1 @@ 
+c 
$ git log -p d...b -- 
commit 08adc8512e63588e6f01533b2a0f762342521b05 
Author: ... 
Date: Mon Sep 1 17:22:06 2014 +0200 

    commit d 

diff --git a/a b/a 
index de98044..d68dd40 100644 
--- a/a 
+++ b/a 
@@ -1,3 +1,4 @@ 
a 
b 
c 
+d 
diff --git a/b b/b 
index 9ddeb5c..4bcfe98 100644 
--- a/b 
+++ b/b 
@@ -1,2 +1 @@ 
-b 
-c 
+d 

commit 8abaaff681be0bcaa16c946feb2989959348c9f4 
Author: ... 
Date: Mon Sep 1 17:21:40 2014 +0200 

    commit c 

diff --git a/a b/a 
index 422c2b7..de98044 100644 
--- a/a 
+++ b/a 
@@ -1,2 +1,3 @@ 
a 
b 
+c 
diff --git a/b b/b 
index 6178079..9ddeb5c 100644 
--- a/b 
+++ b/b 
@@ -1 +1,2 @@ 
b 
+c 
diff --git a/c b/c 
new file mode 100644 
index 0000000..f2ad6c7 
--- /dev/null 
+++ b/c 
@@ -0,0 +1 @@ 
+c 
$ git show d...b -- 
commit 08adc8512e63588e6f01533b2a0f762342521b05 
Author: ... 
Date: Mon Sep 1 17:22:06 2014 +0200 

    commit d 

diff --git a/a b/a 
index de98044..d68dd40 100644 
--- a/a 
+++ b/a 
@@ -1,3 +1,4 @@ 
a 
b 
c 
+d 
diff --git a/b b/b 
index 9ddeb5c..4bcfe98 100644 
--- a/b 
+++ b/b 
@@ -1,2 +1 @@ 
-b 
-c 
+d 

commit 8abaaff681be0bcaa16c946feb2989959348c9f4 
Author: ... 
Date: Mon Sep 1 17:21:40 2014 +0200 

    commit c 

diff --git a/a b/a 
index 422c2b7..de98044 100644 
--- a/a 
+++ b/a 
@@ -1,2 +1,3 @@ 
a 
b 
+c 
diff --git a/b b/b 
index 6178079..9ddeb5c 100644 
--- a/b 
+++ b/b 
@@ -1 +1,2 @@ 
b 
+c 
diff --git a/c b/c 
new file mode 100644 
index 0000000..f2ad6c7 
--- /dev/null 
+++ b/c 
@@ -0,0 +1 @@ 
+c 
$ git diff d...b -- 
$ 
+0

ठीक है, सिवाय इसके कि, 'गिट लॉग एबी' 'ए..बी' नहीं करता है: 'गिट लॉग' के तर्कों को उसी तरह से माना जाता है जैसे 'गिट रेव-लिस्ट' के सेट को सेट करने के मामले में निरीक्षण के लिए संशोधन, और यह प्रभाव में दो सेटों का संघ है। (अन्यथा सभी सही हालांकि यद्यपि ऐसे मामले हैं जहां 'ए..बी' और' बी..ए 'दोनों खाली नहीं हैं।) – torek

+0

@torek: सिर के लिए धन्यवाद। मैंने पहले पैराग्राफ को सही किया है। उम्मीद है कि कोई त्रुटि नहीं छोड़ी गई है :) – knittl

+0

@knittl विस्तृत प्रतिक्रिया के लिए बहुत बहुत धन्यवाद –

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