Git mv'yi geri al (yeniden adlandır)


139

Git'de yeniden adlandırmayı geri almanın doğru yolu nedir, örneğin:

git mv file1 file2

21
Arsız cevap:git mv file2 file1
CanSpice

@ CanSpice: Bu doğru cevap; bu konuda arsız bir şey yok.
CB Bailey

1
@Charles: Öyleyse, düzgün olmayan bir cevap olarak sağladım. :-)
CanSpice

git mv file2 file1 Başka bir şey mi bekliyorsunuz?
Lakshman Prasad

Yanıtlar:


230

Arsız cevap:

git mv file2 file1

Hem eski hem de yeni yolların dizinini otomatik olarak günceller.

Git mv belgelerine bakın


4
Dosya1 ve dosya2'nin her ikisinin de geçerli dizinde (.) olduğunu varsayalım git checkout ., -fseçenekle birlikte neden çalışmıyor ?
ryenus

9
İşlerin bu kadar sezgisel olduğu nadir görünüyor :)
ragerdl

@ryenus Kullanmanız gerekiyor git checkout -- ..
Joseph238

Lol. Bu eğlenceli.
Dmitriy Dokshin

Hata veren benim için işe yaramadı :, fatal: source directory is empty,sadece git reset --hardiş yaptı.
mac13k

43

Son işlemden bu yana başka bir değişiklik (saklamak istediğiniz) yapmadıysanız,

git reset --hard

6
Kullanma alışkanlığına girmek istemem git reset --hard. Sadece geriye doğru hareket etmek benim için daha güvenli bir seçenek gibi görünüyor.
osa

4
Benim için çalıştı. Ben 1) henüz taahhüt edilmemiş bir "git mv" geri almak istedim ve 2) başka hiçbir chages vardı
Dağ Ed

Saklamak istediğiniz başka değişiklikleriniz varsa, bunların hepsi yok olur.
user151841

13
git reset HEAD file2

benim için hile yaptı


1
Bu cevapla ilgili tek sorun, diskteki file2 için kopya bırakmasıdır.
user52472

9

Benim durumumda, tüm bir klasörü taşıdım, sonra olmamam gerektiğini fark ettim.

@Dave Konopka'nın cevabını gerçekten beğendim, ancak bu yaklaşımla pek başarılı olamadım (belki GIT versiyonum (1.8.4)? Dosyalarım hala silinmiş olarak gösterildi. kaybetmek (maalesef).

Bunu yaparken başarılı oldum:

git reset moved_folder
git checkout original_folder

8

Neyi başarmak istediğinize bağlıdır. Dosyanın hiç taşınmamış gibi görünmesini istiyorsanız, taşıma işleminden önce sıfırlayabilir (veya yeniden başlatabilirsiniz). Geçmişi umursamıyorsanız, sadece geri taşıyın.


4
Birincisi, taahhüdünüzü zorlamadığınız veya birileri sizden çekmediği sürece iyi çalışır.
CanSpice

7

Yanlışlıkla çok sayıda dosyayı yeniden adlandırdıysanız ve başladığınız yere geri dönmek istiyorsanız, addsbir git statusgörüşme altında görünen tüm yeniden adlandırılmış dosyaları silin .

Değiştirilen tüm dosyaları sildikten sonra git checkout -- *, orijinal dosya adlarını yerel olarak geri almak için çalıştırabilirsiniz .


4
git reset HEAD file2
git checkout -- file1
rm file2

İlk komut dosya2'yi etkisiz kılar ancak bir kopyasını bu dosyada bırakır. İkinci komut orijinal dosyayı geri yükler ve üçüncü komut yeni dosyayı siler.


1

Kullandığım hile tüm değişiklikleri (mv'd dosyalarını geri yüklemek de dahil) geri almak için bir git stash yapmak ve sonra git stash damla ile stash sildi.


0

Daha az korkutucu, deponun en üst seviyesine gitmek ve şunları yapmaktır:

git reset
git checkout.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.