2009-04-10 6 views
13

पर गिट diff का उपयोग कैसे करते हैं gitx एक महान diff दर्शक है, मैं gitx में स्वचालित रूप से पाइप गिट diff गिट कैसे बना सकता हूं गिटक्स में?आप ओएस एक्स

मैं एक खोल स्क्रिप्ट है कि इस तरह दिखता है के लिए Git config diff.external स्थापित करने के लिए कोशिश की है:

git diff "$2" "$5" | gitx 

हालांकि, कि सभी अलग-अलग फ़ाइलों कई gitx खिड़कियों में खुल जाता है, और यह वास्तव में भोजनालयों फाइल नामों को ऊपर रखें (उन सभी को पागल नामों के साथ tmp फ़ाइलों में बदलें)।

क्या किसी के पास बेहतर समाधान है?

उत्तर

3

मुझे खेद है कि यह वास्तव में gitx के बारे में आपके प्रश्न का उत्तर नहीं देता है। मुझे यह भी यकीन नहीं है कि क्या gitx एक सामान्य diff उपकरण के रूप में कार्य कर सकता है। आपको Xcode इंस्टॉल में शामिल एक मर्ज/diff टूल FileMerge पसंद हो सकता है। Opendiff नामक एक स्क्रिप्ट है जो इसे आपके लिए लॉन्च कर सकती है। बस इसमें निम्न पंक्ति के साथ एक स्क्रिप्ट बनाएं और उस पर diff.external इंगित करें।

opendiff $2 $5 
+0

opendiff के लिए +1, लेकिन मैं इसे diff देखने के लिए उपयोग करता हूं, संपादित नहीं करता हूं। – claf

1

मैं एक similar question एक समय पहले पूछा। वह जवाब आपकी मदद कर सकता है। वहां कुछ प्रश्न हैं, लेकिन किसी को फ़ाइलमेर्ज के अलावा किसी अन्य चीज़ में एक अलग दृश्य खोलने के साथ करना है।

2

मैंने इसे अरक्सिस विलय के लिए किया था, लेकिन इन बुनियादी निर्देशों को संशोधित करने के लिए जो कुछ भी आपने किया है, उसके लिए कठिन नहीं होना चाहिए।

सबसे पहले मैंने ~/bin/git-diff-driver.sh बनाया और फ़ाइल को निष्पादित अनुमति जोड़ा।


#!/bin/sh 

/usr/local/bin/compare -title1:"$1 (repo version)" -title2:"$1 " -max "$2" "$5" 

Araxis स्थापित करता है यह उपकरण फ़ीड के माध्यम से तुलना/usr/स्थानीय/बिन में कमांड लाइन इंटरफेस उपकरण की द तुलना उपकरण उनके जेनेरिक उपकरण और Araxis है *।

एक बार यह सेट किया गया है निम्नलिखित लाइनों ~/.gitconfig


[merge] 
    tool = araxismerge 
[mergetool "araxismerge"] 
    cmd = "/usr/local/bin/compare -3 -merge -wait $LOCAL $BASE $REMOTE $MERGED" 
    path = /usr/local/bin/ 
[diff] 
    external = "/Users/mark/bin/git-diff-driver.sh" 

के लिए जोड़ा जा करने की जरूरत है इस पुनर्निर्देश Araxis के माध्यम से सभी 2 तरह और 3-रास्ता डिफ मर्ज करें। ऐसा लगता है कि "पथ =" आवश्यक नहीं होना चाहिए, लेकिन यह काम करता है।

गुड लक।

18

जैसे सिगुजूस वहां कह रहा है। केवल उस नोबस (जैसे मैं अब हूं) को यह जानने की जरूरत है कि इसका उपयोग करने के लिए गिट को "कनेक्ट" कैसे करें। यहाँ मैं

echo 'opendiff $2 $5' > ~/opendiff-git.sh 
chmod a+x ~/opendiff-git.sh 
git config --global diff.external ~/opendiff-git.sh 

और अब सभी "Git diff जो कुछ भी" FileMerge.app खोलना चाहिए ...

+5

opendiff "$ 2" "$ 5" -मेज "$ 5" उन पथों के साथ काम करता है जिनमें उनमें रिक्त स्थान हैं। ⌘-s फाइलमेर्ज से स्थानीय फ़ाइल में परिवर्तन सहेजता है। –

+0

मैं इस परिवर्तन को पूर्ववत कैसे करूं (यदि कहता है, मैं opendiff के बीमार हो गया और इनलाइन diff उपकरण पर वापस जाना चाहता था)? – thewillcole

+1

@ द विल कोल: 'गिट कॉन्फ़िगरेशन --global --unset diff.external' – AlcubierreDrive

5

मैं काफी यह यकीन नहीं है कि आप क्या चाहते है, लेकिन क्या किया हमारे लिए Macs पर यह निश्चित है है वैसे भी काम और कुछ हद तक संबंधित है, तो आप की कोशिश करना चाहते हो सकता है:

$ Git difftool आयकर opendiff #hash

opendiff कार्यक्रम में diff जो मैं बहुत उपयोगी पाते खुलती। शेल स्क्रिप्ट बनाने और नए बाहरी diff के माध्यम से अपने सभी diffs को मजबूर करने से यह बहुत आसान है। यदि आप मैक पर नहीं हैं तो आप शायद अपने पसंदीदा उपलब्ध diff टूल में opendiff बदल सकते हैं ...

+0

" गिट difftool ... "(w/o dash) – plindberg

+0

ऐसा लगता है कि आप नहीं कर सकते (अपने पसंदीदा उपलब्ध में opendiff को बदलें diff उपकरण ...), 'mytertool' कारण * अज्ञात विलय उपकरण 'mysupertool' * – conny

2

मैं इस स्क्रिप्ट जो मैं git-diffx नामित और मेरे रास्ते में डाल दिया है का उपयोग कर रहा:

#!/bin/bash 

result=$(git diff [email protected]) 

if [ "$result" ]; then 
    echo "$result" | gitx 
fi 
फिर git diff ... के बजाय

, आप git diffx ... कहते हैं।

2

यह प्रश्न थोड़ा पुराना हो सकता है, लेकिन मुझे अभी कुछ ऐसा लगता है जो मेरे लिए काम करता है।

ओपन GitX एप्लिकेशन (v.7), चुनें "GitX" मेनू तो के माध्यम से gitx करने के लिए टर्मिनल पाइप diff पर

"टर्मिनल प्रयोग सक्षम करें":

Git diff | gitx