के अंदर नामित फ़ाइलों को मैं एक टीम में एक नया प्रोग्रामर हूं। और मेरा पहला दिन पर मैं एक मंच के अंदर इस नाम बदली गई फ़ाइल Git द्वारा प्रतिबद्ध होने के लिए तैयार है,:गिट
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: .gitignore
new file: reports/SQLS.rar
renamed: account/enter_rules.php -> enter_rules.old.php
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: account/enter_rules.old.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
account/enter_rules.php
पहले 2 लाइनों मैं कोई समस्या नहीं है हैं। मुझे पता है कि क्या हो रहा है। लेकिन पिछले एक के लिए का नाम बदला गया:, मुझे यकीन नहीं है कि क्या किया जाना चाहिए। प्रणाली अच्छी काम कर रही है।
काम निर्देशिका के अंदर मेरे पास है:
account/enter_rules.php
मैं enter_rules.old.php फ़ाइल नहीं मिल रहा।
ऐसा लगता है अन्य प्रोग्रामर फ़ाइल से एक प्रतिलिपि, .old के रूप में वास्तविक नाम बनाया है, कुछ परीक्षण और नए कोड, बनाया से परिवर्तन का मंचन किया और प्रतिबद्ध करने के लिए भूल गया था। मैन्युअल रूप से old.php
इस स्थिति से निपटने के लिए सबसे अच्छा तरीका क्या होना चाहिए? मैं इस पर काम करना शुरू करने और अपने स्वयं के परिवर्तन करने से पहले गिट स्थिति को स्पष्ट करना चाहता हूं।
मुझे यह पोस्ट मिला लेकिन मुझे यकीन नहीं है कि मुझे अपनी स्थिति में क्या करना चाहिए या नहीं कर सकता।
- मैं सिर्फ फ़ाइल
enter_rules.php
- मैं "से (केवल सुरक्षित के लिए) एक प्रतिलिपि बना: Handling file renames in git
सभी सुझावों, कि मुझे बहुत मदद की पढ़ने के बाद, इस मैं क्या किया है "गिट (इंडेक्स में) को बताया कि फ़ाइल का नाम बदल दिया गया है।
$git commit -m "committing name changes"
। इस बिंदु पर गिट यह नहीं जानता .old हटा दिया गया था। - फिर मैंने लाइन को हल करने के लिए
$git rm "account/enter_rules.old.php"
टाइप किया: परिवर्तन के लिए चरणबद्ध नहीं किए गए परिवर्तन:। उसी तरह हमको ट्रैक करने के लिए गिट को "बताना" करने के लिए$git add .
का उपयोग करते हैं, हमें को भूलने के लिए गिट को "बताने" के लिए$git rm <file>
का उपयोग करना चाहिए। - तब मैं
$git status
टाइप किया और मैं ग्रीन संदेश मिला: नष्ट कर दिया: खाता/enter_rules.old.php। तो मुझे इंडेक्स को बताना चाहिए कि .old फ़ाइल हटा दी गई थी। मैं$git commit -m "committing delete changes"
- टाइप किया अब Git जानता है कि enter_rules.phpenter_rules.old.php को नाम दिया गया था और उसके बाद enter_rules.old.php हटा दिया गया था (हटाया गया)।
- तब मैं आखिरी पंक्ति (ट्रैक न किए गए फ़ाइलों :) हल किया। मैं सिर्फ git करने के लिए है कि एक नई फ़ाइल बनाया गया था बताया और यह enter_rules.php कहता है। मैं जोड़ लिया है और प्रतिबद्ध के रूप में यह होना चाहिए।
सभी सुझावों ने मुझे इस मुद्दे को हल करने में मदद की, इसलिए मैं निष्पक्ष होने की कोशिश करूंगा और चेक दूंगा जिसके पास कम बिंदु है।
यह बहुत अजीब है। आप जो कह रहे हैं उसके आधार पर और क्या 'गिट स्टेटस' दिखाता है, ऐसा लगता है कि आपके सहकर्मी ने 'git mv enter_rules.php enter_rules.old.php' चलाया और फिर उस फ़ाइल को enter_rules.php पर कॉपी किया? वो ऐसा क्यों करेगा? – DIMMSum
बस स्पष्ट होने के लिए। आपको * enter_rules.old.php' की आवश्यकता नहीं है लेकिन आपको 'खाता/enter_rules.php' की आवश्यकता है, सही? – DIMMSum
हाय डेकवे, मैंने सूचना बदल दी है। मुझे सभी गिट आउटपुट पेस्ट करना चाहिए। ऐसा लगता है कि उन्होंने फ़ाइल से एक प्रति बनाई है और .old.php नाम दिया है। उन्होंने कोड में कुछ बदलाव किए हैं। शायद यह काम किया। उन्होंने .old फ़ाइल को हटा दिया और चरण में जोड़ा। मैं बिल्कुल नहीं जानता कि क्या हुआ। लेकिन अब मेरे पास यह स्थिति है जो आप आउटपुट गिट में देखते हैं। – zwitterion