मैंने पढ़ा है कि जब git में फ़ाइलों का नाम बदल रहा है , तो आपको कोई भी परिवर्तन करना चाहिए, अपना नाम बदलें और फिर अपनी नामांकित फ़ाइल को स्टेज करें। Git किसी नई अनट्रेक्ड फ़ाइल के रूप में देखने के बजाय, सामग्री से फ़ाइल को पहचान लेगा, और परिवर्तन इतिहास को बनाए रखेगा।
हालाँकि, आज रात बस यही करने के लिए मैं वापस लौट आया git mv।
> $ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: index.html
#
से Finder में अपना स्टाइलशीट का नाम बदलें iphone.cssकरने के लिएmobile.css
> $ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: index.html
#
# Changed but not updated:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: css/iphone.css
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# css/mobile.css
तो अब मुझे लगता है कि मैंने एक सीएसएस फ़ाइल को हटा दिया है, और एक नया जोड़ा है। मैं जो चाहता हूं, वह नाम बदलने की अनुमति न दें और काम करने दें।
> $ git reset HEAD .
Unstaged changes after reset:
M css/iphone.css
M index.html
वापस जहां से मैं शुरू हुआ था।
> $ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: index.html
#
git mvइसके बजाय का उपयोग करें ।
> $ git mv css/iphone.css css/mobile.css
> $ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# renamed: css/iphone.css -> css/mobile.css
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: index.html
#
लगता है हम अच्छे हैं। तो जब मैंने खोजक का उपयोग किया था तो पहली बार नाम बदलने के बारे में समझ क्यों नहीं आई?
git mv old newस्वचालित रूप से सूचकांक को अद्यतन करता है। जब आप Git से बाहर का नाम बदलते हैं, तो आपको अनुक्रमणिका में परिवर्तनों को करने git add newऔर git rm oldकरने के लिए करना होगा । एक बार जब आप ऐसा कर लेते हैं तो git statusआप उम्मीद के मुताबिक काम करेंगे।
public_htmlडायर में ले गया, जिसे गिट में ट्रैक किया गया है। प्रदर्शन करने के बाद git add .और git commit, यह अभी भी 'हटाई गई' फ़ाइलों का एक गुच्छा दिखाता है git status। मैंने प्रदर्शन किया git commit -aऔर विलोपन शुरू कर दिया गया था, लेकिन अब मैं उन फाइलों पर कोई इतिहास नहीं रखता जो public_htmlअब रहते हैं। यह कार्य प्रवाह उतना आसान नहीं है जितना मैं चाहूंगा।
add+rmयाmv- यह एक ही परिणाम उत्पन्न करता है। Git तो इसका नाम बदलने के लिए इसका नाम / प्रतिलिपि पहचान का उपयोग करता है। आपके द्वारा उद्धृत स्रोत भी गलत है। यह वास्तव में कोई फर्क नहीं पड़ता है कि आप एक ही प्रतिबद्ध में + नाम बदलें या नहीं। जब आप संशोधित और नाम बदलने दोनों में अंतर करते हैं, तो नाम का पता लगाना इसे एक नाम + संशोधन के रूप में देखेगा, या यदि संशोधन कुल पुनर्लेखन है, तो यह जोड़े और हटाए गए के रूप में दिखाई देगा - फिर भी कोई फर्क नहीं पड़ता कि आपने कैसे प्रदर्शन किया यह।