Git'te dosyaları yeniden adlandırırken , herhangi bir değişiklik yapmanız, yeniden adınızı gerçekleştirmeniz ve ardından yeniden adlandırılmış dosyanızı sahnelemeniz gerektiğini okudum . Git dosyayı izlenmeyen yeni bir dosya olarak görmek yerine içerikten tanıyacak ve değişiklik geçmişini saklayacaktır.
Ancak, sadece bu gece yaptığım dönmeye geri döndüm git mv.
> $ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: index.html
#
Dan Finder benim stil yeniden adlandırma iphone.cssiçinmobile.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 artık bir CSS dosyasını sildiğimi ve yeni bir tane eklediğimi düşünüyor. İstediğim gibi değil, yeniden adlandırmayı geri alalım ve git işini yapalım.
> $ git reset HEAD .
Unstaged changes after reset:
M css/iphone.css
M index.html
Başladığım yere geri döndüm.
> $ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: index.html
#
git mvBunun yerine kullanalım .
> $ 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
#
Görünüşe göre iyiyiz. Peki neden Git'i ilk kez Finder'ı kullandığımda yeniden adlandırmayı tanımadı?
git mv old newdizini otomatik olarak günceller. Git dışında yeniden adlandırdığınızda, git add newve git rm olddizinindeki değişiklikleri yapmak için ve öğelerini yapmanız gerekir . Bunu yaptıktan sonra git statusbeklediğiniz gibi çalışacaktır.
public_htmlgit'te izlenen bir dizine taşıdım . Gerçekleştirilen olması git add .ve git commithala bir demet dosyaları 'silindi' gösterdi git status. Bir performans gerçekleştirdim git commit -ave silme işlemleri gerçekleştirildi , ancak şimdi içinde yaşayan dosyalar üzerinde hiçbir geçmişim yok public_html. Bu iş akışı istediğim kadar pürüzsüz değil.
add+rmyamvda aynı sonucu verir. Git, daha sonra yeniden adlandırıldığını bildirmek için yeniden adlandırma / kopya algılama özelliğini kullanır. Alıntıladığınız kaynak da yanlış. Aynı taahhüdde değiştirip değiştirmemeniz önemli değildir. Hem değiştirme hem de yeniden adlandırma arasında bir fark yaptığınızda, yeniden adlandırma algılaması bunu yeniden adlandırma + değişiklik olarak görür veya değişiklik toplam yeniden yazma ise, eklenmiş ve silinmiş olarak gösterilir - yine de nasıl yaptığınız önemli değildir o.