दिलचस्प पोस्ट
समूह द्वारा आईडी कॉलम जोड़ें संख्या 1123456789 से सी में 1,123,456,789 तक कैसे प्रारूपित करें? अलग-अलग समय पर विभिन्न पैरामीटरों से मैं एक सूची को कैसे सॉर्ट कर सकता हूँ MVC4 में ब्राउजर बैक बटन क्लिक ब्राउजर कैश कैसे साफ़ करें? PHP में अनुसूचित कार्यों का सबसे अच्छा तरीका क्या है क्या मुझे सभी एंड्रॉइड डिवाइसों का समर्थन करने के लिए 14 विभिन्न लेआउट की आवश्यकता है? जावा एक्लिप्स परियोजना में अप्रयुक्त वर्गों को ढूंढें केवल एसक्यूएल का उपयोग कर SQL सर्वर 2005 छवि फ़ील्ड में चित्र डालें फ़ाइल या असेंबली 'Microsoft.ReportViewer.Common, संस्करण = 11.0.0.0 को लोड नहीं किया जा सका वस्तुओं में द्विआधारी खोज को लागू करें सी में एक सूचक को कैसे संरेखित करें नेस्टेड राज्यों या यूआई-राउटर में बाएं बार के साथ लेआउट के विचार? Regex का उपयोग कर एक स्ट्रिंग में एक पैटर्न का सूचक प्राप्त करें किसी भी द्विआधारी पेड़ में दो नोड्स के सबसे कम सामान्य पूर्वज कैसे मिलेंगे? स्काला की इस टाइपिंग, अमूर्त प्रकार आदि का उपयोग स्व-प्रकार को लागू करने के लिए कैसे करें?

क्या मैं 'git कमिट' को एक फाइल कर सकता हूं और इसकी सामग्री परिवर्तनों को अनदेखा कर सकता हूं?

मेरी टीम के प्रत्येक डेवलपर के पास अपना स्थानीय कॉन्फ़िगरेशन है यह कॉन्फ़िगरेशन जानकारी एक फ़ाइल में devtargets.rb जाती है जिसका नाम devtargets.rb जो हमारे रेक निर्माण कार्यों में उपयोग किया जाता है। मैं नहीं चाहता कि डेवलपर्स एक-दूसरे के डिवेटट्रैज फाइल को झेलनी पड़े, हालांकि।

मेरा पहला विचार था कि उस फाइल को .gitignore सूची में डाल दिया ताकि वह git के लिए प्रतिबद्ध न हो।

फिर मैंने सोचने लगा: क्या फ़ाइल को करना संभव है, लेकिन फाइल में परिवर्तनों को अनदेखा करना है? इसलिए, मैं फ़ाइल का एक डिफ़ॉल्ट संस्करण कर दूंगा और फिर जब कोई डेवलपर अपने स्थानीय मशीन पर इसे बदलता है, तो git बदलावों को अनदेखा कर देगा और जब आप git स्थिति करते हैं या git कमिट करते हैं तो यह बदली हुई फाइलों की सूची में दिखाई नहीं देगी ।

क्या यह संभव है? यह निश्चित रूप से एक अच्छी सुविधा होगी …

वेब के समाधान से एकत्रित समाधान "क्या मैं 'git कमिट' को एक फाइल कर सकता हूं और इसकी सामग्री परिवर्तनों को अनदेखा कर सकता हूं?"

ज़रूर, मैं समय-समय पर इस प्रकार का उपयोग कर हूं

 git update-index --assume-unchanged [<file> ...] 

वापस लाने और फिर से ट्रैकिंग शुरू करने के लिए (यदि आप भूल गए कि कौन सी फाइलें अनट्रेक्टेड हैं, तो यह प्रश्न देखें ):

 git update-index --no-assume-unchanged [<file> ...] 

प्रासंगिक प्रलेखन :

– [नहीं-] मान-अपरिवर्तित
जब यह ध्वज निर्दिष्ट किया जाता है, तो पथ के लिए रिकॉर्ड किए गए ऑब्जेक्ट नाम अपडेट नहीं किए जाते हैं। इसके बजाय, इस विकल्प को सेट / अनसेट करता है, पथों के लिए "अपरिवर्तित मान लें"। जब "अपरिवर्तित मान" बिट चालू होता है, तो उपयोगकर्ता आश्वासन देता है कि फाइल को बदलना नहीं है और गिट को यह मानने की अनुमति मिलती है कि काम कर रहे ट्री फ़ाइल इंडेक्स में दर्ज की गई मेल खाता है। यदि आप काम कर रहे वृक्ष फ़ाइल को बदलना चाहते हैं, तो आपको गिट को बताने के लिए बिट को अनसेट करने की आवश्यकता है। फाइल सिस्टम पर एक बड़ी परियोजना के साथ काम करते समय यह कभी-कभी उपयोगी होता है जो बहुत धीमी है lstat(2) सिस्टम कॉल (जैसे सीआईएफएस)।

गिट विफल हो जाएगी (ईमानदारी से) यदि उसे इस फाइल को इंडेक्स में संशोधित करने की आवश्यकता है जैसे कि एक प्रतिबद्ध में विलय; इस प्रकार, अगर ग्रहण-अप्रकाशित फ़ाइल अपस्ट्रीम बदल जाती है, तो आपको स्थिति मैन्युअल रूप से संभालना होगा।

इस मामले में सुन्दरता से असफल होने का मतलब है कि यदि कोई पुल करने पर आपके पास उस फ़ाइल की ओर से कोई बदलाव होता है (वैध परिवर्तन, आदि), तो यह कहता है:

 $ git pull … From https://github.com/x/y 72a914a..106a261 master -> origin/master Updating 72a914a..106a261 error: Your local changes to the following files would be overwritten by merge: filename.ext 

और मर्ज करने से इंकार करेगा।

उस समय, आप या तो अपने स्थानीय परिवर्तनों को वापस कर सकते हैं, यहां एक तरीका है:

  $ git checkout filename.ext 

फिर पुनः खींचें और अपनी स्थानीय फ़ाइल को फिर से संशोधित करें, या सेट –no-assume-unchanged कर सकते हैं और आप उस समय सामान्य पट्टा और मर्ज करें आदि कर सकते हैं।

आम अभ्यास एक devtargets.default.rb बनाने और उसे प्रतिबद्ध करने के लिए लगता है, और फिर प्रत्येक उपयोगकर्ता को उस फ़ाइल को devtargets.rb (जो devtargets.rb सूची में है) में कॉपी करने के लिए devtargets.rb करता है। उदाहरण के लिए, केकपीएचपी अपनी डाटाबेस कॉन्फ़िगरेशन फ़ाइल के लिए समान है जो स्वाभाविक रूप से मशीन से मशीन में बदलता है।

ऐसा करने का पसंदीदा तरीका है git update-index --skip-worktree <file> , इस उत्तर में बताए अनुसार:

assume-unchanged उन मामलों के लिए डिज़ाइन किया गया है जहां यह जांचना महंगा है कि क्या फ़ाइलों के एक समूह को संशोधित किया गया है या नहीं; जब आप बिट सेट करते हैं, तो git (निश्चित रूप से) मानता है कि सूचकांक के उस भाग के अनुरूप फाइलें काम की प्रतिलिपि में संशोधित नहीं हुई हैं। तो यह स्टेट कॉल की गड़बड़ी से बचा जाता है यह तब भी खो जाता है जब सूचकांक में फ़ाइल की प्रविष्टि बदलती है (इसलिए, जब फ़ाइल को अपस्ट्रीम बदल दिया जाता है)।

skip-worktree उस से अधिक है: यहां तक ​​कि जहां git जानता है कि फाइल को संशोधित किया गया है (या एक रीसेट – हार्ड या पसंद से संशोधित होने की जरूरत है), यह दिखाएगा कि यह नहीं है, इसके बजाय सूचकांक से संस्करण का उपयोग किया गया है । यह तब तक बनी रहती है जब तक सूचकांक खारिज नहीं किया जाता है।

इसे पूर्ववत करने के लिए, git update-index --no-skip-worktree <file>

IntelliJ आईडीईए प्रयोक्ताओं के लिए: यदि आप किसी फ़ाइल (या फाइल) के लिए परिवर्तनों को अनदेखा करना चाहते हैं तो आप उसे अलग Change Set ले जा सकते हैं।

  • Local Changes Cmd + 9 ( Cmd + 9 )
  • वह फ़ाइल चुनें जिसे आप अनदेखा करना चाहते हैं
  • F6 को उन्हें एक और Change Set