Birkaç hafta önce yaptığım eski bir taahhüdüm var. Bu işlemden yalnızca bir dosyayı geri yüklemek istiyorum. Ben ne yaparım?
Birkaç hafta önce yaptığım eski bir taahhüdüm var. Bu işlemden yalnızca bir dosyayı geri yüklemek istiyorum. Ben ne yaparım?
Yanıtlar:
git checkout 'master@{7 days ago}' -- path/to/file.txt
Bu HEAD'ı değiştirmeyecek, sadece yerel dosyanın üzerine yazacak path/to/file.txt
Bkz adam git-rev-ayrıştırma (ders basit bir karma (gibi orada olası revizyon özellikleri için dd9bacb
güzel yapacak))
Değişikliği taahhüt etmeyi unutmayın (bir incelemeden sonra ...)
revision-specification
beri OP sordu :)
shacommit~1
(ex:) öğesini kullanmanız git checkout 0f4bbdcd~1 -- path/to/file.txt
yeterlidir.
git checkout [Revision_Key] -- path/to/file
.git checkout
tek dosyaları işleyebilir (sehe ile cevap bakınız), kopyalayıp yapıştırmanıza gerek yok.
HEAD
, ORIG_HEAD
ya da kombine olanların herhangi ^
/ ~
/ @
tarzı gösterimde.
Git'e bağlı yeni bir dosyayı geri yüklemem gerekiyordu. Yani sadece tekrarlamak ve başka bir bakış açısı vermek için, bunu aşağıdaki iki adımı uygulayarak yapmanız gerekir:
git log -3
Bu, en son üç taahhüdü gösterir. Tam olarak istediğiniz sürümü daraltmak için yorumları ve yazarın adını okuyun. İstediğiniz kesinleştirme sürümü için bu uzun taahhütlü kimliği (yani b6b94f2c19c456336d60b9409fb1e373036d3d71) yazın.
git checkout b6b94f2c19c456336d60b9409fb1e373036d3d71 - myfile.java Yükleme
kimliğini VE geri yüklemek istediğiniz dosya adını iletin . Çift kısa çizgiden önce ve sonra bir boşluk bıraktığınızdan emin olun.
Bunu yapmanın birçok yolu var. Ama bu hatırlayabildiğim kadar basit. Umarım yardımcı olur.
NOT: Proje yolunuzun / klasörünüzün içindeyseniz, ödeme komutunda tam dosya yolunu yazmak gerekli değildir.
Tüm cevaplar belirtilir git checkout <tree-ish> -- <pathspec>
. Git v2.23.0 itibarıyla , sorumlu olanın bir kısmını kabul etmesi gereken yeni bir git geri yükleme yöntemi vardır git checkout
. Github blogundaki değişikliklerin önemli noktalarını görün .
Bu komutun varsayılan davranışı, source
parametreden gelen içerikle çalışan bir ağacın durumunu geri yüklemektir (bu durumda bir sağlama karması olacaktır).
Tamamlama karma değerini varsayarsak, abcdef
komut şöyle görünecektir:
git restore --source=abcdef file_name
(varsayılan olarak) onu çalışma ağacına koyar. Değişikliği doğrudan işleme koymak için doğrudan dizine koymak istiyorsanız:
git restore --source=abcdef --worktree --staged file_name
veya kısa seçenek adlarıyla:
git restore -s=abcdef -W -S file_name