Bir yazılım mühendisi veya web geliştiricisi olarak Git depomuza birçok taahhüt göndermemiz gerekebilir.
Ancak Git depomuza gönderilmeyecek dosyaları taahhüt etmek istediğimiz başka durumlar da vardır. Herhangi bir taahhütte bulunmadan önce bazen bazı ek değişiklikler uygulamak isteyebiliriz.
Sonuç olarak Git depomuz aracılığıyla son işlemi geri almamız gerekiyor. Bu başlıkta son commit’i nasıl geri alabileceğimizi göreceğiz.
Sıfırlamayla birlikte Son Git Taahhüdünü Geri Al
Komutu çalıştırarak son git taahhüdünü kolayca geri alabiliriz, yani, 'git'i sıfırla' bir seçenekle birlikte, yani, '-yumuşak' bu, dosyalarımızda yapılan tüm değişiklikleri koruyacaktır. 'HEAD~1' olan geri alma taahhüdünü tanımlamamız gerekiyor.
Git'in son taahhüdü Git depomuzdan silinecek.
$ git reset --soft HEAD~1
Bu gösterimde,
'KAFA~1': Bu, günlüğün geçmişi içinde bu HEAD'i tek bir işleme sıfırlamak istediğimiz anlamına gelir.
Java'da palindrom
$ git log --oneline 3fad532 Last commit (HEAD) 3bnaj03 Commit before HEAD (HEAD~1) Vcn3ed5 Two commits before HEAD (HEAD~2)
Yukarıdaki komutun etkisi ne olacak?
Komut, yani, 'git'i sıfırla' bir komut olarak görülebilir, yani komutun tersi 'git ekle' , esasen dosyaları Git dizinine eklemek.
Seçeneği açıklarsanız '-yumuşak' Git, dizin veya yürütme dizini içindeki dosyaları hiçbir şekilde değiştirmez.
Örneğin, son taahhüdümüze iki dosya ekledik, ancak bu dosyaya bazı değişiklikler uygulamak istiyoruz.
dolgu css
$ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 Second commit *7083e29 Initial repository commit
Sonuç olarak başvuracağız. 'git'i sıfırla' seçeneğiyle birlikte '-yumuşak' son taahhüdü geri almak ve ayrıca bazı ek değişiklikler uygulamak için.
$ git reset --soft HEAD~1 $ git status
Şube müdürü üzerinde
Şubemiz taahhüt 1'e göre master/Origin öndedir (yerel taahhütlerimizi yayınlamak için 'git push'u uygulayın).
Yapılacak değişiklikler:
(apply 'git restore --staged …' to unstage)
yeni dosya: dosya1
$ git log --oneline --graph *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit
Görebildiğimiz gibi, taahhüt silinmiş olmasına rağmen, son taahhüt (işlenecek değişiklikler) geri alındığında dosya hala dizindedir.
Depomuzdaki son işlemi başarıyla gerçekleştirdik.
Git işlemini Sert Sıfırlama
Yukarıdaki bölümde kolayca yapabileceğimizi düşünebiliriz. son işlemi geri al ve değişiklikleri koru indeks içindeki herhangi bir dosyaya yapılır. Ancak bazı durumlarda herhangi bir dosyada yapılan değişiklikleri ve taahhütleri kaldırmak isteriz.
Bir seçeneğin amacıdır, yani, '-zor' .
Son işlemi geri almak ve dizin ve dizin içindeki her değişikliği kaldırmak için bir komut yürütün; 'git'i sıfırla' seçenekle birlikte, yani, '-zor' ve HEAD komutundan önce bir işlemi tanımlayın ('KAFA~1') .
$ git reset --hard HEAD~1
Kullanıldıktan sonra her taahhüt ve değişiklik indeksten ve dizinden kaldırılacaktır. '--zor' emretmek. Bu yüzden dikkatli olmalıyız.
Örneğin, 'dosya1' adlı herhangi bir yeni dosyayı Git depomuza kaydettik.
$ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit
Şimdi, son işlemi geri almak ve her değişikliği kaldırmak istediğimizi varsayalım.
$ git reset --hard HEAD~1
Şimdi, HEAD 90f8bb1 İkinci taahhütte
Şimdi git depo durumumuzu kontrol edelim.
mason formülü
$ git status
Şube müdürü üzerinde
Şubemiz master/Origin ile çağdaştır (yerel taahhütlerimizi yayınlamak için 'git Push' komutunu uygulayın).
string'i int'ye dönüştürme
Artık taahhüt edilecek hiçbir şey yok ve çalışan ağaç temiz.
Karışık Sıfırlama Git taahhüdü
Değişiklikleri çalışma dizinimizde tutun, ancak dizin içinde DEĞİL. Komutu uygulamamız gerekiyor, yani ., 'git sıfırla' seçenekle birlikte, yani, '-karışık' . Bu komuttan sonra 'HEAD~1'i basitçe son işleme eklemeliyiz.
$ git reset --mixed HEAD~1
Örneğin, 'dosya1' adlı herhangi bir dosyayı, geri almamız gereken herhangi bir işleme dahil ettik.
$ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit
Basitçe, komutu yürütüyoruz, yani, 'git'i sıfırla' seçenekle birlikte, yani, '-karışık' son taahhüdü geri almak için.
Sonuç olarak, '-karışık' komut bir 'karışım' donanımdan ve yazılımdan sıfırlama arasında, dolayısıyla adı.
Şube müdürü üzerinde
Şubemiz taahhüt 1 ile master/Origin öndedir (yerel taahhütlerimizi yayınlamak için 'git push'u uygulayın).
İzlenmeyen dosyalar: (işlenecek şeyin içine eklemek için 'git add…' uygulayın)
file1
İşleme için hiçbir şey dahil edilmedi ancak izlenmeyen dosyalar mevcut (izleme için 'git track' uygulayın).
Bu nedenle, dosyalarda yapılan değişiklikleri koruyarak son işlemi geri almak için başka bir uygulama tespit ettik.
Geri alma ile birlikte Son Taahhüdü geri al
Komutu uygulayın, yani, 'git'e geri dön' ve geri alınacak bir taahhüdü tanımlayın, yani, 'KAFA' Son Git taahhüdünü geri almak için tarihin taahhüdüne.
$ git revert HEAD
'Git revert' komutu, 'git reset' komutuyla karşılaştırıldığında farklıdır çünkü son işlemin dejenere edilmesiyle tanımlanan bazı değişikliklerin yanı sıra herhangi bir yeni işlemi de kaydedebilir.
'HEAD~1'i 'git reset' komutuyla tanımlayabiliriz çünkü bu sıfırlama komutu, açıklanan taahhüdü bozarken herhangi bir yeni HEAD yerini ayarlayacaktır.
bash'taki alt dize
Sonuç olarak, geri dönmek ve gerçekleştirilmemeyi taahhüt etmek için bazı dosyalarda yapılan değişiklikleri tekrar uygulayacağız. Git depomuz için herhangi bir yeni dosyayı taahhüt ettik ancak bu taahhüdü bozmak istiyoruz.
$ git log --oneline -graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit
'Git revert' komutunu çalıştırıyorsanız Git, değişiklikleri otomatik olarak gerçekleştirmek için metin düzenleyicimizi açacaktır.
Bir taahhüt mesajını yürütmeyi bitirdiğimizde yeni bir taahhüt karması ile birlikte yeni bir mesaj gösterilecektir.
[master 2d40a2c] Revert 'Added a new file named as file1' 1 file changed, 1 deletion(-) delete mode 100644 file1
Git geçmişimizi tekrar kontrol etmemiz gerekirse, depomuz aracılığıyla son işlemi geri almak için yeni bir işlemin eklendiğini fark edebiliriz.
$ git log --oneline --graph *2d40a2c (HEAD -> master) Revert 'Added a new file named file1' *1fa26e9 Added a new file named as file1 *ee8b133 Second commit *a3bdedf Initial commit