ฉันได้อ่านว่าเมื่อเปลี่ยนชื่อไฟล์ในคอมไพล์คุณควรยอมรับการเปลี่ยนแปลงใด ๆ ดำเนินการเปลี่ยนชื่อของคุณแล้วระยะไฟล์เปลี่ยนชื่อของคุณ 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 จึงคิดว่าฉันได้ลบไฟล์ 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 จึงไม่รู้จักการเปลี่ยนชื่อในครั้งแรกเมื่อฉันใช้ Finder
git mv old new
อัพเดตดัชนีโดยอัตโนมัติ เมื่อคุณเปลี่ยนชื่อนอก Git คุณจะต้องทำgit add new
และgit rm old
ทำขั้นตอนการเปลี่ยนแปลงดัชนี เมื่อคุณทำเช่นนี้git status
จะทำงานตามที่คุณคาดหวัง
public_html
dir ที่ถูกติดตามในคอมไพล์ เมื่อดำเนินการgit add .
แล้วและgit commit
ยังคงแสดงไฟล์ 'ลบ' git status
หลายรายการ ฉันดำเนินการgit commit -a
แล้วและการลบถูกผูกมัด แต่ตอนนี้ฉันไม่มีประวัติในไฟล์ที่ใช้งานอยู่ในpublic_html
ตอนนี้ กระบวนการทำงานนี้ไม่ราบรื่นอย่างที่ฉันต้องการ
add+rm
หรือmv
สร้างผลลัพธ์ที่เหมือนกัน Git จะใช้การตรวจจับการเปลี่ยนชื่อ / คัดลอกเพื่อแจ้งให้คุณทราบว่าเป็นการเปลี่ยนชื่อ แหล่งที่มาที่คุณเสนอมานั้นไม่ถูกต้องเช่นกัน ไม่สำคัญว่าคุณจะแก้ไข + เปลี่ยนชื่อในคอมมิทเดียวกันหรือไม่ เมื่อคุณทำทั้งการแก้ไขและการเปลี่ยนชื่อการตรวจจับการเปลี่ยนชื่อจะเห็นว่าเป็นการเปลี่ยนชื่อ + การดัดแปลงหรือหากการดัดแปลงเป็นการเขียนใหม่ทั้งหมดการแสดงนั้นจะแสดงเป็นการเพิ่มและลบ แต่ก็ไม่สำคัญว่าคุณจะทำอย่างไร มัน.