Why does git show "dev/null" in status after interactive add of renamed file? -


मुझे interactively जोड़ने के बाद मेरे git स्थिति आउटपुट में "dev / null" का अप्रत्याशित रूप प्राप्त हो रहा है एक फ़ाइल के लिए एक पैच जिसका नाम बदल दिया गया था मैं सोच रहा हूं कि यह उम्मीद की जाती है और इस व्यवहार के लिए कुछ अच्छे कारण हैं, या यदि यह एक बग हो सकता है।

नीचे इस का पुन: उत्पन्न करने का एक सरल उदाहरण है मेरे असली-विश्व परिदृश्य में, यह थोड़ा और अधिक जटिल है और इसका एक अच्छा कारण है कि मैं git add -p का उपयोग कर रहा हूं, लेकिन मैं इसे इस न्यूनतम उदाहरण तक उबालने में सक्षम था:

 $ git init test /local_disk/tmp/test/.git/ $ cd test $ गूंजती "foo"> foo $ git foo $ git commit -m 'foo जोड़ें' [मास्टर (रूट) में रिक्त गिट भंडार प्रारंभ किया गया -commit) 3643b5d] foo 1 फ़ाइलें बदल गई, 1 प्रविष्टि (+), 0 विलोपन (-) बनाओ मोड 100644 फू $ mv foo बार $ git add -p diff --git a / foo b / foo अनुक्रमणिका 257cc56..0000000 --- a / foo +++ / dev / null @@ -1 +0,0 @@ -foo इस हंक चरण [y, n, q, a, d, /, e,?]? Y $ git स्थिति # शाखा मास्टर पर # परिवर्तन करने के लिए परिवर्तन: # ("जीआईटी रीसेट हेड ..." का उपयोग करने के लिए) # # नई फ़ाइल: dev / null # deleted: foo # # बदल गया है, लेकिन अपडेट नहीं किया गया है: # (उपयोग करें "जीआईटी ऐड / आरएम ..." क्या अपडेट किया जाएगा, अपडेट करने के लिए) # (कार्यशील निर्देशिका में बदलावों को त्यागने के लिए "जीआईटी चेकआउट - ..." का उपयोग करें) # # हटाए गए: dev / null # # अनट्रेक्ड फाइलें: # (उपयोग करें "जीआईटी ऐड ..." को शामिल करने के लिए क्या किया जाएगा) # # बार 

"नई फाइल: देव / नल" और "हटाई गई फ़ाइल: देव / नल" के साथ क्या है? मैं उम्मीद करता हूं कि इससे ठीक उसी चीज का परिणाम होगा जैसे मैंने किया था:

 $ mv foo bar $ git rm foo $ git स्थिति # शाखा मास्टर # पर परिवर्तन करने के लिए परिवर्तन: # ("git का उपयोग करें रीसेट HEAD ... "को हटाया नहीं जा सकता है) # # हटाए गए: foo # # अनट्रेक्टेड फाइलें: # (" जीआईटी ऐड ... "का उपयोग करने के लिए इसमें क्या शामिल होगा) # # बार 

मैं उपयोग कर रहा हूं गीट संस्करण 1.6.5.5, और इसे 1.6.5.4 में पुन: प्रस्तुत किया है। मैं इसे अपने साइगविन माहौल में पुन: पेश करने में असमर्थ हूं, जिसकी संस्करण गीता है, संस्करण 1.6.1.2।

के रूप में asnduks उल्लेख है, आपको फ़ाइल हटाने की git add करने की कोशिश नहीं करनी चाहिए git को नई फ़ाइल, git rm पुरानी फाइल (या git mv पुराने नए को सरल दृष्टिकोण लेने के लिए) जोड़ें। दूसरी ओर, git या तो शिकायत कर लेना चाहिए कि आप क्या कर रहे हैं या भ्रमित नहीं हो और एक गैर-मौजूद देव / नल फ़ाइल जोड़ने का प्रयास करें।

अपडेट
git add -p वास्तव में फाइल निकालने के लिए एक वैध विधि है, लेकिन ऐसा लगता है कि एक git लागू करने के लिए एक अलग git लागू करने के लिए एक बग शुरू किया गया था < / Code>।

अपडेट
मैं इसे 1.6.1.2 के साथ लिनक्स पर पुन: उत्पन्न कर सकता हूं, इसलिए हो सकता है कि साइगविन जीआईटी सामान्य व्यवहार से अलग है। उस स्थिति में, पहले उल्लेखित बग-फिक्स ने इस व्यवहार को शुरू नहीं किया हो और काम git add -p साइगविन के git के लिए विशिष्ट हो सकता है

अपडेट
इसे चालू करने के लिए यह एक बग था, यह पता लगाने के लिए मैं कोशिश कर रहा हूं कि git add -p जीआईटी ऐड के इंटरैक्टिव पहलू में जो जेफ किंग ने प्रस्तावित किया है।


Comments

Popular posts from this blog

Is there an open source WebSockets (JavaScript) XMPP library? -

java - Is there an object like a "Set" that can contain only unique string values, but also contain a count on the number of occurrences of the string value? -

mysql - Can mysql_pconnect be called multiple times in one php page? -