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.css
iç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 mv
Bunun 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 new
dizini otomatik olarak günceller. Git dışında yeniden adlandırdığınızda, git add new
ve git rm old
dizinindeki değişiklikleri yapmak için ve öğelerini yapmanız gerekir . Bunu yaptıktan sonra git status
beklediğiniz gibi çalışacaktır.
public_html
git'te izlenen bir dizine taşıdım . Gerçekleştirilen olması git add .
ve git commit
hala bir demet dosyaları 'silindi' gösterdi git status
. Bir performans gerçekleştirdim git commit -a
ve 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+rm
yamv
da 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.