Git mergetool अवांछित .orig फ़ाइलें जनरेट करता है


486

जब मैं Kdiff3 के साथ एक मर्ज संघर्ष रिज़ॉल्यूशन (और अन्य मर्ज उपकरण मैंने कोशिश की) मैंने देखा कि रिज़ॉल्यूशन पर एक *.origफ़ाइल बनाई जाती है। क्या इसके लिए कोई तरीका है जिससे वह अतिरिक्त फ़ाइल न बनाई जा सके?

जवाबों:


770

से एक संभावित समाधान git config:

git config --global mergetool.keepBackup false

मर्ज करने के बाद, संघर्ष मार्करों के साथ मूल फ़ाइल को .origएक्सटेंशन के साथ फ़ाइल के रूप में सहेजा जा सकता है ।
यदि यह चर सेट है falseतो यह फ़ाइल संरक्षित नहीं है।
डिफ़ॉल्ट true(बैकअप फ़ाइलों को रखने के लिए)।

वैकल्पिक रूप से उन फ़ाइलों को जोड़ने या अनदेखा नहीं किया जा रहा है, जैसा कि इस gitguru लेख में सुझाया गया है ,

git mergetool" .orig" प्रत्यय के साथ फ़ाइल के मर्ज-संघर्ष संस्करण को सहेजता है ।
मर्ज को जोड़ने और करने से पहले इसे हटाना सुनिश्चित करें या *.origअपने में जोड़ें .gitignore

बेरीक टिप्पणियों में उपयोग करने का सुझाव देता है :

find . -name \*.orig 
find . -name \*.orig -delete

चार्ल्स बेली ने अपने जवाब में आंतरिक अंतर टूल सेटिंग्स से अवगत होने की सलाह दी, जो उन बैकअप फ़ाइलों को भी उत्पन्न कर सकते थे, चाहे वह कोई भी सेटिंग हो।

  • kdiff3 की अपनी सेटिंग्स हैं (" मैनुअल मर्ज " डायरेक्टरी देखें )।
  • WinMerge जैसे अन्य टूल का अपना बैकअप फ़ाइल एक्सटेंशन (WinMerge: हो सकता है .bak, जैसा कि इसके मैनुअल में बताया गया है )।

तो आपको उन सेटिंग्स को भी रीसेट करने की आवश्यकता है।


7
@Sophistifunk: अच्छी बात है। मैंने उचित संकेत का उपयोग करने के उत्तर को संपादित किया है।
वॉन

10
Kdiff में सेटिंग्स को संपादित करना मेरे लिए स्वयं काम करता है: सेटिंग्स> Kdiff3> निर्देशिका कॉन्फ़िगर करें। "बैकअप फ़ाइलें (.orig)" लेबल वाले बॉक्स को अनचेक करें
किमीगैड

2
git config --global mergetool.keepBackup false, मावेरिक्स 10.9.2 पर P4Merge के लिए हल किया गया। धन्यवाद :)
kpsfoo

1
@Sander धन्यवाद। मैंने लिंक को पुनर्स्थापित कर दिया है।
वॉन मार्क

5
ध्यान दें कि यदि आप मैन्युअल रूप से अपने .gitconfig का संपादन कर रहे हैं, तो आप keepBackup = falseअंडर चाहते हैं [mergetool], न कि [mergetool "BeyondCompare4"]जो भी दृश्य मर्ज उपकरण आपने कॉन्फ़िगर किया है।
ट्रूविल

85

आप उपयोग करने के साथ एक छोटे से सावधान रहना होगा kdiff3के रूप में, जबकि git mergetoolएक को बचाने के लिए विन्यस्त किया जा सकता .origविलय के दौरान फ़ाइल, के लिए डिफ़ॉल्ट व्यवहार kdiff3भी एक को बचाने के लिए है .origकी स्वतंत्र रूप से बैकअप फ़ाइल git mergetool

आपको यह सुनिश्चित करना होगा कि mergetoolबैकअप बंद है:

git config --global mergetool.keepBackup false

और यह भी कि kdiff3 की सेटिंग बैकअप नहीं बनाने के लिए सेट की गई है:

Configure/Options => Directory Merge => Backup Files (*.orig)

4
Configure/Options => Directory Merge => Backup Files (*.orig)वास्तव में सभी अजीब io- दास, klauncher «» अज्ञात प्रोटोकॉल से छुटकारा पाने में मदद की, और .orig त्रुटियाँ पैदा नहीं कर सके। धन्यवाद
Geremia

2
क्यों git config --global mergetool.keepBackup falseसेट करना पड़ता है?
गरिमा

1
मुझे अपनी पहली लाइन ठीक करने दो "आपको kdiff3 का उपयोग करने के लिए थोड़ा पागल होना है" - वहाँ :-)
टिम जार्विस

@TimJarvis मैं हर समय kdiff3 का उपयोग करता हूं और मुझे यह पसंद है। मुझे आश्चर्य है कि अगर इसे "kdiff3 का उपयोग करने के लिए थोड़ा पागल" कहने का कोई कारण है या यदि वह सिर्फ मजाक कर रहा है (मैं स्माइली चेहरा देखता हूं, तो मैं किसी भी तरह से नाराज नहीं होगा, मैं ईमानदारी से पूछ रहा हूं)
क्विन विल्सन

35

स्पष्ट होने के लिए, सही git कमांड है:

git config --global mergetool.keepBackup false

अन्य दोनों जवाबों में कमांड लाइन में टाइपो है जो इसे विफल कर देगा या सही ढंग से काम नहीं करेगा।


32

केडीआईफ़ 3 को कॉन्फ़िगर करके .orig फ़ाइल को सहेजने का विकल्प अक्षम किया जा सकता है

KDiff3 बैकअप फ़ाइल .orig विकल्प


2
यही वास्तविक समाधान होना चाहिए।
गोंडी

मेरे लिये कार्य करता है। बहुत बहुत धन्यवाद @ richard- पियरे
एंड्रयू

मेरे पास पहले से ही वैश्विक git config ठीक से सेट था लेकिन अभी भी उन .orig फ़ाइलों को रिबेस / मर्ज आदि पर रखा था। Kdiff3 सेटिंग्स ने आखिरकार चाल चली।
सेसिल फिशरॉल

25

मैं ".orig" में समाप्त होने वाली सभी फ़ाइलों को साफ करने के लिए इसका उपयोग करता हूं:

function git-clean-orig {
    git status -su | grep -e"\.orig$" | cut -f2 -d" " | xargs rm -r
}

यदि आप एक डरपोक-बिल्ली हैं :) तो आप उन्हें सूचीबद्ध करने के लिए अंतिम भाग को छोड़ सकते हैं (या -rयदि आप प्रत्येक डिलीट को अनुमोदित करना चाहते हैं तो छोड़ दें ):

function git-show-orig {
    git status -su | grep -e"\.orig$" | cut -f2 -d" "
}

1
पूरी तरह से उपयोगी है अगर आप अभी भी बैकअप चाहते हैं जब तक कि आप प्रतिबद्ध होने के लिए तैयार न हों।
केली

5
यदि आप चारों ओर मर्ज बैकअप रखते हैं तो आप .orig। Inignignore को शीर्ष स्तर पर भी जोड़ सकते हैं।
विले

11

मैं बस कमांड का उपयोग करता हूं

git clean -n *.orig

यह सुनिश्चित करने के लिए जाँच करें कि केवल वही फ़ाइल जिसे मैं हटाना चाहता हूँ सूचीबद्ध हैं

git clean -f *.orig

1
एक अच्छी टिप! अच्छा होगा यदि आप gitconfig सेटिंग्स (अन्य उत्तरों से) के संबंध में अन्य उत्तर भी जोड़ दें।
अज़प

10

दीर्घकालिक समाधानों के रूप में पेश किए गए सही उत्तरों के अलावा, आप git clean -fकमांड के साथ एक बार आपके लिए सभी अनावश्यक फ़ाइलों को हटाने के लिए गिट का उपयोग कर सकते हैं लेकिन git clean --dry-runयह सुनिश्चित करने के लिए पहले उपयोग करें कि अनपेक्षित कुछ भी नहीं होगा।

यह आपके ओएस / शेल के लिए विशिष्ट लिपियों की कार्यक्षमता में निर्मित परीक्षण का उपयोग करके फ़ाइलों को हटाने का लाभ है।


4
हां, लेकिन बहुत सावधानी बरतें क्योंकि यह कमांड .orig फाइलों को हटाने की तुलना में बहुत अधिक है।
किग्राहस्टी

4

या बस जोड़ते हैं

* .orig

अपने वैश्विक gitignore के लिए


3
git config --global mergetool.keepBackup false

यह बियॉन्ड तुलना (मेरजेट के रूप में) के लिए भी काम करना चाहिए


0

खिड़कियाँ:

  1. फ़ाइल Win/Users/HOME/.gitconfigसेट मेंmergetool.keepTemporaries=false
  2. , फ़ाइल git/libexec/git-core/git-mergetoolमें, फ़ंक्शन को किसी अन्य ब्लॉक में cleanup_temp_files()जोड़ें rm -rf -- "$MERGED.orig"

1
स्वीकृत उत्तर देखें। यह कोर टूल्स को संशोधित करता है और स्केलेबल नहीं है।
ओलिगोफ़्रेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.