Git से आउटपुट कैसे पढ़ें?


270

इसके लिए मैन पेज git-diffलंबा है, और कई मामलों की व्याख्या करता है जो शुरुआती के लिए आवश्यक नहीं लगते हैं। उदाहरण के लिए:

git diff origin/master

1
एक अलग टेक्स्ट एडिटर का उपयोग करके लाइन नंबर के लिए @ ... @ रेंज नोटेशन स्पष्ट हो गए।
पोसिड

कौन सा पाठ संपादक?
जुस 12

जवाबों:


488

उदाहरणों पर एक नज़र डालते हैं, जो git इतिहास से अलग है ( कमिट में 1088261f git.git रिपॉजिटरी में ):

diff --git a/builtin-http-fetch.c b/http-fetch.c
similarity index 95%
rename from builtin-http-fetch.c
rename to http-fetch.c
index f3e63d7..e8f44ba 100644
--- a/builtin-http-fetch.c
+++ b/http-fetch.c
@@ -1,8 +1,9 @@
 #include "cache.h"
 #include "walker.h"

-int cmd_http_fetch(int argc, const char **argv, const char *prefix)
+int main(int argc, const char **argv)
 {
+       const char *prefix;
        struct walker *walker;
        int commits_on_stdin = 0;
        int commits;
@@ -18,6 +19,8 @@ int cmd_http_fetch(int argc, const char **argv, const char *prefix)
        int get_verbosely = 0;
        int get_recover = 0;

+       prefix = setup_git_directory();
+
        git_config(git_default_config, NULL);

        while (arg < argc && argv[arg][0] == '-') {

इस पैच लाइन का विश्लेषण लाइन द्वारा करें।

  • पहली पंक्ति

    diff --it / a / buildin-http-fetch.cb / http-fetch.c
    फॉर्म में "git diff" हेडर है diff --git a/file1 b/file2a/और b/फ़ाइल नाम एक ही है जब तक कि नाम बदलने / कॉपी (हमारे मामले में) की तरह शामिल है। --gitइसका मतलब यह है कि diff "Git" diff प्रारूप में है।

  • अगला एक या अधिक विस्तारित हेडर लाइन हैं। पहले तीन

    समानता सूचकांक 95%
    बिलिन-http-fetch.c से नाम बदलें
    http-fetch.c का नाम बदला
    हमें बताया है कि फ़ाइल से नाम दिया गया था builtin-http-fetch.cकरने के लिए http-fetch.cऔर उन दो फाइलों 95% समान (जो इस नाम बदलने का पता लगाने के लिए इस्तेमाल किया गया था) हैं।

    विस्तारित लाइन में अंतिम पंक्ति हेडर है, जो है
    सूचकांक f3e63d7..e8f44ba 100644
    हमें दी गई फ़ाइल के मोड के बारे में बताएं ( 100644इसका मतलब है कि यह साधारण फ़ाइल है और उदाहरण के लिए सिम्कलिन नहीं है, और यह कि निष्पादन योग्य अनुमति बिट नहीं है), और प्रीमेसेज के लघु हैश के बारे में (दिए गए परिवर्तन से पहले फ़ाइल का संस्करण) और पोस्टिमेज (फ़ॉर्म परिवर्तन के बाद फ़ाइल का संस्करण)। git am --3wayयदि पैच को स्वयं लागू नहीं किया जा सकता है, तो इस लाइन का उपयोग 3-तरफा मर्ज करने का प्रयास करने के लिए किया जाता है।

  • अगला दो-पंक्ति एकीकृत अलग हेडर है

    --- ए / बिलिन-http-fetch.c
    +++ बी / http-fetch.c
    diff -Uपरिणाम की तुलना में इसमें स्रोत (प्रीमेसेज) और डेस्टिनेशन (पोस्टिमेज) फाइल नामों के बाद फाइल-मॉडिफिकेशन-टाइम नहीं है और न ही फाइल-मॉडिफिकेशन-टाइम है। अगर फ़ाइल स्रोत बनाया गया था /dev/null; यदि फ़ाइल हटा दी गई थी, तो लक्ष्य है /dev/null
    आप सेट करते हैं diff.mnemonicPrefixके स्थान पर सही करने के लिए विन्यास चर, a/और b/इस दो लाइन शीर्षक में उपसर्गों आप के बजाय हो सकता है c/, i/, w/और o/उपसर्गों क्रमश: तुम क्या तुलना करने के लिए के रूप में; git-config देखें (1)

  • इसके बाद एक या एक से अधिक मतभेदों को देखें; प्रत्येक हंक एक क्षेत्र दिखाता है जहाँ फाइलें भिन्न होती हैं। यूनिफाइड फॉर्मेट हॉक जैसी लाइन के साथ शुरू होता है

    @@ -1,8 +1,9 @@
    या
    @@ -18,6 +19,8 @@ int cmd_http_fetch (int argc, const char ** argc, ...
    यह प्रारूप में है @@ from-file-range to-file-range @@ [header]। से-फाइल-रेंज फॉर्म में है -<start line>,<number of lines>, और फाइल-रेंज के लिए है +<start line>,<number of lines>। दोनों स्टार्ट-लाइन और नंबर-ऑफ-लाइन क्रमशः प्रीइमेज और पोस्टिमेज में हंक की स्थिति और लंबाई को संदर्भित करते हैं। यदि संख्याओं की संख्या नहीं दिखाई गई तो इसका मतलब है कि यह 0 है।

    वैकल्पिक शीर्षलेख सी फ़ंक्शन को दिखाता है जहां प्रत्येक परिवर्तन होता है, अगर यह एक सी फ़ाइल है (जैसे -pकि जीएनयू में विकल्प भिन्न होता है), या समकक्ष, यदि कोई हो, तो अन्य प्रकार की फाइलों के लिए।

  • इसके बाद विवरण आता है कि फाइलें कहां भिन्न हैं। दोनों फ़ाइलों के लिए आम लाइनें एक अंतरिक्ष चरित्र के साथ शुरू होती हैं। दो फ़ाइलों के बीच वास्तव में भिन्न होने वाली रेखाओं में बाएं प्रिंट कॉलम में निम्न संकेतक वर्णों में से एक है:

    • '+' - यहाँ पहली फ़ाइल में एक लाइन जोड़ी गई थी।
    • '-' - पहली फ़ाइल से यहाँ एक लाइन हटा दी गई थी।


    इसलिए, उदाहरण के लिए, पहला हिस्सा

     #include "cache.h"
     #include "walker.h"
    
    -int cmd_http_fetch(int argc, const char **argv, const char *prefix)
    +int main(int argc, const char **argv)
     {
    +       const char *prefix;
            struct walker *walker;
            int commits_on_stdin = 0;
            int commits;
    

    इसका मतलब है कि cmd_http_fetchइसके द्वारा प्रतिस्थापित किया गया था main, और उस const char *prefix;लाइन को जोड़ा गया था।

    दूसरे शब्दों में, परिवर्तन से पहले, तत्कालीन 'बिलिन-http-fetch.c' फ़ाइल का उपयुक्त टुकड़ा इस तरह दिखता था:

    #include "cache.h"
    #include "walker.h"
    
    int cmd_http_fetch(int argc, const char **argv, const char *prefix)
    {
           struct walker *walker;
           int commits_on_stdin = 0;
           int commits;
    

    परिवर्तन के बाद अब 'http-fetch.c' फ़ाइल का टुकड़ा इस तरह दिखता है:

    #include "cache.h"
    #include "walker.h"
    
    int main(int argc, const char **argv)
    {
           const char *prefix;
           struct walker *walker;
           int commits_on_stdin = 0;
           int commits;
    
  • वहां हो सकता है

    फ़ाइल के अंत में कोई नई पंक्ति नहीं
    मौजूद लाइन (यह उदाहरण में भिन्न नहीं है)।

जैसा कि डोनल फेलो ने कहा कि पढ़ने का अभ्यास करना सबसे अच्छा है, यह वास्तविक जीवन के उदाहरणों पर भिन्न होता है, जहां आप जानते हैं कि आपने क्या बदला है।

संदर्भ:


1
@Geremia: Git नाम बदलने का पता लगाने के लिए समानता-आधारित उत्तराधिकारियों का उपयोग करता है ... और कोड चाल और प्रतिलिपि का पता लगाने के लिए भी git blame -C -C, यही वह काम करता है; यह Git डिजाइन निर्णय है। गिट डिफरेंट फॉर्मेट उपयोगकर्ता के लिए समानता (या असमानता) सूचकांक दिखाता है।
जैकब नार

1
@Geremia: अधिक सटीक होना, [header]फ़ंक्शन की शुरुआत के साथ निकटतम पूर्ववर्ती है जो हंक से पहले होता है। ज्यादातर मामलों में इस लाइन में फ़ंक्शन का नाम शामिल होता है जिसमें भिन्न का हिस्सा होता है। यह diffड्राइवर को अलग करने के लिए gitattribute सेट के साथ विन्यास योग्य है , और ड्राइवर को xfuncnameकॉन्फ़िगरेशन चर सहित अलग करता है।
जैकब नार 16:बस्की

1
@AnthonyGeoghegan: पंक्तियों को हटाया जा सकता है (तब डाक में पंक्तियों की संख्या 0 है), या जोड़ी गई (तब पूर्व में लाइनों की संख्या 0 है)।
जकुब नारबस्की 0

1
@KasunSiyambalapitiya: एकीकृत अंतर स्वरूप जो गिट उपयोग करता है (संदर्भ के अनुसार प्रारूप ^ [1] के विपरीत) संशोधित लाइन के बीच अंतर नहीं करता है, और हटाए गए और जोड़े गए लाइन। [१]: gnu.org/software/diffutils/manual/html_node/Context-Format.html
Jakub Narębski

1
@ JakubNar Jakbski: लाइनों की संख्या 1 से चूक जाती है, 0. से नहीं। यह उतना ही सरल है। व्यवहार में, यह केवल एकल-पंक्ति फ़ाइलों के लिए "-1" और / या "+1" के रूप में प्रकट होता है क्योंकि प्रदर्शन के लिए कोई संदर्भ नहीं है।
गुइडो फ़्लहर

68

@@ -1,2 +3,4 @@ अंतर का हिस्सा

इस हिस्से को समझने में मुझे थोड़ा समय लगा, इसलिए मैंने एक न्यूनतम उदाहरण बनाया है।

प्रारूप मूल रूप से diff -uएकीकृत रूप में समान है ।

उदाहरण के लिए:

diff -u <(seq 16) <(seq 16 | grep -Ev '^(2|3|14|15)$')

यहां हमने 2, 3, 14 और 15. लाइनों को हटा दिया। आउटपुट:

@@ -1,6 +1,4 @@
 1
-2
-3
 4
 5
 6
@@ -11,6 +9,4 @@
 11
 12
 13
-14
-15
 16

@@ -1,6 +1,4 @@ माध्यम:

  • -1,6इसका अर्थ है कि पहली फ़ाइल का यह टुकड़ा लाइन 1 से शुरू होता है और कुल 6 लाइनों को दिखाता है। इसलिए यह 1 से 6 लाइनों को दर्शाता है।

    1
    2
    3
    4
    5
    6
    

    -"पुराने" का अर्थ है, जैसा कि हम आमतौर पर इसे लागू करते हैं diff -u old new

  • +1,4इसका मतलब है कि दूसरी फ़ाइल का यह टुकड़ा लाइन 1 से शुरू होता है और कुल 4 लाइन दिखाता है। इसलिए यह 1 से 4 लाइनों को दर्शाता है।

    + "नया" का अर्थ है।

    हमारे पास 6 के बजाय केवल 4 लाइनें हैं क्योंकि 2 लाइनें हटा दी गई थीं! नया हंक बस है:

    1
    4
    5
    6
    

@@ -11,6 +9,4 @@ दूसरे हंक के लिए अनुरूप है:

  • पुरानी फाइल पर, हमारे पास 6 लाइनें हैं, जो पुरानी फाइल के लाइन 11 से शुरू होती है:

    11
    12
    13
    14
    15
    16
    
  • नई फ़ाइल पर, हमारे पास 4 लाइनें हैं, जो नई फ़ाइल की लाइन 9 से शुरू होती है:

    11
    12
    13
    16
    

    ध्यान दें कि लाइन 11नई फ़ाइल की 9 वीं पंक्ति है क्योंकि हमने पहले से ही 2 लाइनों को हटा दिया है: 2 और 3।

हंक हेडर

आपके git संस्करण और कॉन्फ़िगरेशन के आधार पर, आप पंक्ति के आगे एक कोड रेखा भी प्राप्त कर सकते हैं @@, जैसे func1() {:

@@ -4,7 +4,6 @@ func1() {

यह भी -pसादे ध्वज के साथ प्राप्त किया जा सकता है diff

उदाहरण: पुरानी फ़ाइल:

func1() {
    1;
    2;
    3;
    4;
    5;
    6;
    7;
    8;
    9;
}

यदि हम लाइन हटाते हैं 6, तो अंतर दिखाता है:

@@ -4,7 +4,6 @@ func1() {
     3;
     4;
     5;
-    6;
     7;
     8;
     9;

ध्यान दें कि यह के लिए सही लाइन नहीं है func1: यह लाइनों को छोड़ दिया 1और 2

यह भयानक विशेषता अक्सर यह बताती है कि प्रत्येक हंक किस फंक्शन या क्लास से संबंधित है, जो अंतर की व्याख्या करने के लिए बहुत उपयोगी है।

हेडर का चयन करने के लिए एल्गोरिथ्म कैसे काम करता है, इस पर चर्चा की गई है: गिट अलग-अलग हंक हेडर में अंश कहां से आता है?


11
यह अभी भी काफी समझ में नहीं आया, जो किसी के लिए है। में @@ -1,6 +1,4 @@कृपया नहीं पढ़ते -1के रूप में minus oneया +1के रूप में plus oneके बजाय के रूप में इस पढ़ा line 1 to 6में वर्ष (प्रथम) फ़ाइल। यहां ध्यान दें - implies "old"माइनस नहीं। BTW, स्पष्टीकरण के लिए धन्यवाद ... हैश।
dkjain

इस @@ -1,8 +1,9 @ @ से यह व्याख्या करना संभव है कि वास्तव में क्या हुआ है। उदाहरण के लिए 1) एक लाइन को 2 जोड़ा गया है) एक लाइन को संशोधित किया जा रहा है और एक लाइन को जोड़ा जा रहा है और इसी तरह। या यह किसी अन्य तरीके से है, क्योंकि उन्हें प्राप्त करने का तरीका होना चाहिए क्योंकि जीआरआई में भिन्नता की पहचान होती है कि कोड में क्या लाइनें संशोधित की गई हैं। कृपया मेरी मदद करें क्योंकि मुझे वास्तव में इसे हल करने की आवश्यकता है
कसुन सियामबलपिटिया

कृपया ध्यान दें कि यह गलत और बहुत भ्रामक है, ऊपर दिए गए उत्तर में यह कथन: " +1,4यह कहता है कि यह टुकड़ा दूसरी फ़ाइल के लाइन 1 से 4 से मेल खाता है "। ऐसा इसलिए है क्योंकि यह +1,4गैर-आकस्मिक संदर्भ लाइनों को संदर्भित कर सकता है। बल्कि, क्या " +1,4" वास्तव में इसका मतलब है कि कि " देखते हैं 4उस फ़ाइल की 'संस्करण' में लाइनों (यानी संदर्भ लाइनों) "। यह का अर्थ समझने के लिए महत्वपूर्ण है +, -और <whitespace>, उन पंक्तियों की शुरुआत में के रूप में यह जिसे की व्याख्या करने के लिए लागू होता है। एक और अधिक दृश्य उदाहरण: youtube.com/watch?v=1tqMjJeyKpw
डेमिलोला ओलोवुकेरे

23

यहाँ सरल उदाहरण है।

diff --git a/file b/file 
index 10ff2df..84d4fa2 100644
--- a/file
+++ b/file
@@ -1,5 +1,5 @@
 line1
 line2
-this line will be deleted
 line4
 line5
+this line is added

यहाँ एक स्पष्टीकरण (विवरण यहाँ देखें )।

  • --git एक कमांड नहीं है, इसका मतलब है कि यह अंतर का git संस्करण है (यूनिक्स नहीं)
  • a/ b/निर्देशिका हैं, वे वास्तविक नहीं हैं। यह केवल एक सुविधा है जब हम एक ही फाइल से निपटते हैं (मेरे मामले में / a इंडेक्स में है और बी / वर्किंग डायरेक्टरी में है)
  • 10ff2df..84d4fa2 इन 2 फाइलों की ब्लॉब आईडी हैं
  • 100644 "मोड बिट्स" है, यह दर्शाता है कि यह एक नियमित फ़ाइल है (निष्पादन योग्य नहीं है और प्रतीकात्मक लिंक नहीं है)
  • --- a/file +++ b/fileमाइनस संकेत एक / संस्करण में लाइनें दिखाते हैं, लेकिन b / संस्करण से गायब होते हैं; और प्लस संकेत एक / लेकिन वर्तमान में b / (मेरे मामले में --- मौजूद हटाई गई रेखाओं और +++ का मतलब है कि b / / और वर्किंग डायरेक्टरी में फाइल को जोड़ा है) में मौजूद लाइनों को दिखाता है।
  • @@ -1,5 +1,5 @@इसे समझने के लिए एक बड़ी फ़ाइल के साथ काम करना बेहतर है; यदि आपके पास अलग-अलग स्थानों में दो परिवर्तन हैं, तो आपको दो प्रविष्टियाँ मिलेंगी जैसे @@ -1,5 +1,5 @@; मान लें कि आपके पास फ़ाइल लाइन 1 है ... लाइन 100 और हटाए गए लाइन 10 और नई लाइन 100 जोड़ें - आपको मिलेगा:
@@ -7,7 +7,6 @@ line6
 line7
 line8
 line9
-this line10 to be deleted
 line11
 line12
 line13
@@ -98,3 +97,4 @@ line97
 line98
 line99
 line100
+this is new line100

धन्यवाद। "100644 मोड बिट्स है, यह दर्शाता है कि यह एक नियमित फ़ाइल है (निष्पादन योग्य नहीं और प्रतीकात्मक लिंक नहीं)"। क्या "मोड बिट्स" लिनक्स में एक अवधारणा है, या सिर्फ गिट में?
टिम

@ जीआईएम के लिए विशिष्ट नहीं। सही 3 अंक ( 644) को अष्टक (मान: 1, 2, 4 क्रमशः eXecute, लिखें, और पढ़ें अनुमति) में पढ़ा जाना है और उस क्रम में स्वामी (उपयोगकर्ता), फिर समूह, फिर अन्य अनुमतियों से मेल खाता है। तो संक्षेप में 644मतलब होगा अगर लिखित प्रतीकात्मक u=rw,og=r, कि सभी के लिए पठनीय है, लेकिन केवल मालिक द्वारा लिखने योग्य है। बाईं ओर के अन्य अंक अन्य जानकारी को सांकेतिक शब्दों में बदलते हैं, जैसे कि अगर यह एक सिमलिंक है, आदि। मान github.com/git/git/blob/… देखा जा सकता है , इस स्थिति में पहले 1 "नियमित फ़ाइल" है।
पैट्रिक मेव्ज़ेक

15

डिफ़ॉल्ट आउटपुट स्वरूप (जो मूल रूप से एक प्रोग्राम से आता है जैसे diffकि आप अधिक जानकारी के लिए देखना चाहते हैं) को "एकीकृत अंतर" के रूप में जाना जाता है। इसमें अनिवार्य रूप से 4 विभिन्न प्रकार की लाइनें शामिल हैं:

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

मैं सलाह देता हूं कि आप पढ़ने का अभ्यास एक फ़ाइल के दो संस्करणों के बीच करते हैं, जहाँ आप जानते हैं कि आपने क्या बदला है। जैसे आप पहचानेंगे कि आप क्या देख रहे हैं।


5
+1: अभ्यास के बारे में सुझाव एक बहुत अच्छा है - शायद बहुत तेजी से दस्तावेज़ीकरण पढ़ने की कोशिश कर रहा है।
Cascabel

6

मेरे मैक पर:

info diffफिर चुनें: Output formats-> Context-> Unified format-> Detailed Unified:

या ऑनलाइन आदमी एक ही अनुभाग के लिए एक ही रास्ते के बाद गन्नू में भिन्न होता है:

फ़ाइल: diff.info, नोड: विस्तृत एकीकृत, अगला: उदाहरण एकीकृत, ऊपर: एकीकृत प्रारूप

एकीकृत प्रारूप का विस्तृत विवरण ......................................

एकीकृत आउटपुट प्रारूप दो-लाइन हेडर के साथ शुरू होता है, जो इस तरह दिखता है:

 --- FROM-FILE FROM-FILE-MODIFICATION-TIME
 +++ TO-FILE TO-FILE-MODIFICATION-TIME

समय की मोहर लगने का समय `2002-02-21 23: 30: 39.942229878 -0800 'है, जो दिनांक, समय, भिन्नात्मक सेकंड और समय क्षेत्र को इंगित करता है।

आप हेडर की सामग्री को `- लैबल = लेबल 'विकल्प के साथ बदल सकते हैं; देखें * नोट वैकल्पिक नाम ::।

इसके बाद एक या एक से अधिक मतभेदों को देखें; प्रत्येक हंक एक क्षेत्र दिखाता है जहाँ फाइलें भिन्न होती हैं। एकीकृत प्रारूप हंक इस तरह दिखते हैं:

 @@ FROM-FILE-RANGE TO-FILE-RANGE @@
  LINE-FROM-EITHER-FILE
  LINE-FROM-EITHER-FILE...

दोनों फ़ाइलों के लिए आम लाइनें एक अंतरिक्ष चरित्र के साथ शुरू होती हैं। दो फ़ाइलों के बीच वास्तव में भिन्न होने वाली रेखाओं में बाएं प्रिंट कॉलम में निम्न संकेतक वर्णों में से एक है:

पहली फाइल में यहां '+' एक लाइन जोड़ी गई थी।

`- 'पहली फ़ाइल से यहाँ एक लाइन हटा दी गई थी।


1
ध्यान दें कि git 'XXX-FILE-MODIFICATION-TIME' भाग को प्रिंट नहीं करता है, क्योंकि यह संस्करण नियंत्रण प्रणाली के लिए मायने नहीं रखता है। फाइलसिस्टम पर फाइलों की तुलना करने के लिए टाइमस्टैम्स "गरीब आदमी" संस्करण नियंत्रण के रूप में कार्य कर सकता है।
जकुब नारबस्की

3

यह आपके प्रश्न से स्पष्ट नहीं है कि आप किस भिन्न भाग को भ्रमित करते हैं: वास्तव में भिन्न, या अतिरिक्त शीर्ष लेख जानकारी गिट प्रिंट। बस के मामले में, यहाँ हेडर का एक त्वरित अवलोकन है।

पहली पंक्ति कुछ इस तरह है diff --git a/path/to/file b/path/to/file- जाहिर है कि यह आपको बता रहा है कि अंतर के इस खंड के लिए क्या फ़ाइल है। आप बूलियन config चर सेट करते हैं diff.mnemonic prefix, aऔर bकी तरह अधिक वर्णनात्मक पत्र में बदल जायेगा cऔर w(के लिए प्रतिबद्ध है और काम वृक्ष)।

अगला, "मोड लाइनें" हैं - लाइनें आपको किसी भी बदलाव का विवरण देती हैं जिसमें फ़ाइल की सामग्री को बदलना शामिल नहीं है। इसमें नई / हटाई गई फ़ाइलें, नामांकित / प्रतिलिपि की गई फ़ाइलें और अनुमतियाँ परिवर्तन शामिल हैं।

अंत में, वहाँ एक लाइन की तरह है index 789bd4..0afb621 100644। आप शायद इसके बारे में कभी परवाह नहीं करेंगे, लेकिन उन 6 अंकों की हेक्स संख्या इस फ़ाइल के लिए पुराने और नए ब्लॉब्स का संक्षिप्त SHA1 हैश है (एक बूँद एक git ऑब्जेक्ट है जो फ़ाइल की सामग्री की तरह कच्चे डेटा को संग्रहीत करता है)। और निश्चित रूप से, 100644फ़ाइल का मोड है - अंतिम तीन अंक स्पष्ट रूप से अनुमतियाँ हैं; पहले तीन अतिरिक्त फ़ाइल मेटाडेटा जानकारी देते हैं ( एसओ पोस्ट जो यह वर्णन करता है )।

उसके बाद, आप मानक एकीकृत अलग आउटपुट (क्लासिक की तरह diff -U) पर हैं। यह हंक में विभाजित है - एक हंक परिवर्तन और उनके संदर्भ वाली फ़ाइल का एक खंड है। प्रत्येक हंक की एक जोड़ी से पहले होती है ---और +++प्रश्न में फ़ाइल को दर्शाने वाली रेखाएं होती हैं, फिर वास्तविक अंतर (डिफ़ॉल्ट रूप से) संदर्भ की तीन रेखाएं होती हैं -और +हटाए गए / जोड़े गए लाइनों को दिखाने वाली लाइनें होती हैं।


++ indexलाइन के लिए। के साथ पुष्टि कीgit hash-object ./file
सिरो संतिली med 病 C C with with
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.