2016-02-09 9 views
11

सेटअप एक नया Git रेपो साधते और जोड़ने के कुछ फ़ाइलें: फ़ाइलोंपरे `Git difftool --dir-diff` के साथ तुलना करें - प्रतीक-लिंक के साथ एक मुद्दा

[Feb-09 18:35][Desktop]$ mkdir exampleForStackOverflow 
[Feb-09 18:35][Desktop]$ cd exampleForStackOverflow/ 

[Feb-09 18:35][exampleForStackOverflow]$ git init 
Initialized empty Git repository in ~/Desktop/exampleForStackOverflow/.git/ 

[Feb-09 18:35][exampleForStackOverflow]$ touch foo.txt 
[Feb-09 18:35][exampleForStackOverflow]$ touch bar.txt 
[Feb-09 18:35][exampleForStackOverflow]$ touch baz.txt 

[Feb-09 18:36][exampleForStackOverflow]$ git add * 

[Feb-09 18:36][exampleForStackOverflow]$ git commit -m "Create files" 
[master (root-commit) 42bfa60] Create files 
3 files changed, 0 insertions(+), 0 deletions(-) 
create mode 100644 bar.txt 
create mode 100644 baz.txt 
create mode 100644 foo.txt 

संशोधित करें:

[Feb-09 18:37][exampleForStackOverflow]$ echo "Foo" > foo.txt 
[Feb-09 18:37][exampleForStackOverflow]$ echo "Bar" > bar.txt 
[Feb-09 18:37][exampleForStackOverflow]$ echo "Baz" > baz.txt 

वर्तमान स्थिति:

[Feb-09 18:38][exampleForStackOverflow]$ git status 
On branch master 
Changes not staged for commit: 
    (use "git add <file>..." to update what will be committed) 
    (use "git checkout -- <file>..." to discard changes in working directory) 

    modified: bar.txt 
    modified: baz.txt 
    modified: foo.txt 

no changes added to commit (use "git add" and/or "git commit -a") 

वर्तमान diff:

[Feb-09 18:38][exampleForStackOverflow]$ git diff 
diff --git a/bar.txt b/bar.txt 
index e69de29..ebd7525 100644 
--- a/bar.txt 
+++ b/bar.txt 
@@ -0,0 +1 @@ 
+Bar 
diff --git a/baz.txt b/baz.txt 
index e69de29..a688182 100644 
--- a/baz.txt 
+++ b/baz.txt 
@@ -0,0 +1 @@ 
+Baz 
diff --git a/foo.txt b/foo.txt 
index e69de29..bc56c4d 100644 
--- a/foo.txt 
+++ b/foo.txt 
@@ -0,0 +1 @@ 
+Foo 

अब bcompare साथ मैं निम्नलिखित मिल:

[Feb-09 18:38][exampleForStackOverflow]$ git difftool --dir-diff 

enter image description here

यह स्पष्ट रूप से अपेक्षित व्यवहार नहीं है। फाइलें संरेखित नहीं होती हैं इसलिए मतभेद नहीं देखे जा सकते हैं।


मैं चला रहा हूँ:

[Feb-09 18:44][exampleForStackOverflow]$ git --version 
git version 2.7.1 

[Feb-09 18:44][exampleForStackOverflow]$ cat /etc/redhat-release 
CentOS release 6.6 (Final) 

परे की तुलना करें: Version 4.1.3 (build 20814)

Git config:

[Feb-09 18:45][exampleForStackOverflow]$ git config --list 
color.ui=true 
user.name=FOO 
[email protected] 
log.decorate=full 
diff.tool=bc3 
difftool.bc3=trustExitCode 
merge.tool=bc3 
mergetool.bc3=trustExitCode 
core.repositoryformatversion=0 
core.filemode=true 
core.bare=false 
core.logallrefupdates=true 

प्रश्न: (फादर ओम Ismail Badawi) सिम्लिंक के साथ इसका क्या संबंध है?

उत्तर: क्षमा करें स्क्रीनशॉट बेहद स्पष्ट नहीं है लेकिन दाईं ओर की फ़ाइलें सिम्लिंक हैं। git doc से

git difftool --dir-diff --no-symlinks 

: नीचे देखें:

[Feb-09 18:52][exampleForStackOverflow]$ cd /tmp/git-difftool.RWDqE/right 
[Feb-09 18:52][right]$ ll 
total 0 
lrwxrwxrwx 1 BAZ BAZ_g 54 Feb 9 18:51 bar.txt -> /home/BAZ/Desktop/exampleForStackOverflow/bar.txt 
lrwxrwxrwx 1 BAZ BAZ_g 54 Feb 9 18:51 baz.txt -> /home/BAZ/Desktop/exampleForStackOverflow/baz.txt 
lrwxrwxrwx 1 BAZ BAZ_g 54 Feb 9 18:51 foo.txt -> /home/BAZ/Desktop/exampleForStackOverflow/foo.txt 
+0

सिम्लिंक के साथ इसका क्या संबंध है? –

+0

@IsmailBadawi: – sixtyfootersdude

उत्तर

17

sixtyfootersdude के सुझाव के अलावा, दूसरा विकल्प तुलनात्मक लिंक के साथ तुलना करना है। यह सिमलिंक को उसी नाम की फाइलों के साथ संरेखित करेगा।

फ़ोल्डर में की तुलना करें, नियम उपकरण पट्टी बटन (रेफरी आइकन) पर क्लिक करें। पर जाएं टैब हैंडलिंग। चेक प्रतीकात्मक लिंक का पालन करें।

यह सब नया सत्र को प्रभावित, लटकती केवलको इस दृश्य के लिए उपयोग से संवाद के नीचे बदलने के साथ ही सत्र चूक अद्यतन इससे पहले कि आप ठीक क्लिक करें बनाने के लिए।

+1

अच्छा। मुझे यह समाधान भी बेहतर लगता है। मैंने बोम्पायर में इस विकल्प की तलाश की लेकिन इसे नहीं मिला। * चूंकि आप स्कूटर के लिए काम करते हैं *: शीर्ष मेनू से नियम बटन क्यों उपलब्ध नहीं हैं? शायद उपकरण के तहत? – sixtyfootersdude

+0

विंडोज या लिनक्स पर शीर्ष मेनू से, ** सत्र> सत्र सेटिंग्स ** खोलें, फिर नियम टूलबार बटन के समान स्थान पर जाने के लिए ** तुलना ** टैब पर जाएं। मैक पर मेनू आइटम ** तुलना> सत्र सेटिंग्स ** से परे है। –

+0

धन्यवाद! आप सही हैं। यह काम करता है। – sixtyfootersdude

12

का उपयोग करते हुए इस काम करेंगे

- [नहीं-] सिमलिंक

Git difftool का डिफ़ॉल्ट व्यवहार सिमलिंक बनाने है काम करने वाले पेड़ पर जब - डीआईआर-डिफ मोड में चलाया जाता है औरकी तुलना में दाएं हाथ की तरफकाम करने वाले पेड़ में फ़ाइल के समान सामग्री उत्पन्न करता है।

निर्दिष्ट करना - नो-सिम्लिंक प्रतियां प्रतिलिपि बनाने के लिए गिट difftool निर्देशित करता है। --no-symlinks विंडोज पर डिफ़ॉल्ट है।

+1

अपडेट किया गया यह अंतर देखने के लिए अच्छा काम करता है। लेकिन सावधान रहें कि यह विधि आपको अपनी फ़ाइलों को संपादित करने की अनुमति नहीं देती है (क्योंकि वे केवल अस्थायी प्रतियां हैं)। – Rhubbarb

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