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.