Git ile Nasıl Yapılır: İşlemi Geri Al

Bazen Git deponuzda değişiklik yapabilir, ancak bir hata yaptığınızı anlayabilirsiniz. Şimdi kodunuzun tekrar çalışmasını sağlamak için bu taahhütleri geri almak istiyorsunuz.


Bu kılavuzda, bir depoya yerel ve uzak taahhütler için git reset komutuna bakacağız.

Git reset ve git revert arasındaki fark

Git kullanırken sıfırlama ve geri alma işlemleri arasındaki farkı anlamak önemlidir.

  • Git reset komutu, önceki taahhütleri depodan kaldırarak ve Git HEAD’i daha önceki bir işleme sıfırlayarak taahhütleri geri alır. Hangi seçeneğin kullanıldığına bağlı olarak bazı Git geçmişi kaybolabilir.
  • Git revert komutu, deponun daha önceki bir durumunu temsil eden yeni bir taahhüt oluşturarak taahhütleri geri alır. Bunu yaparak Git geçmişi kaybolmaz.

Zaten değişiklikleri ittiniz ve birileri bu değişiklikleri çekti mi? Değişiklikleri geri almak için git reset kullanmamalısınız, bunun yerine Git geri alma taahhüdü kılavuzumuzda açıklandığı gibi git revert kullanmalısınız.

Bir komutu geri almak için git reset komutunu kullanma

Aşağıdaki örnekler için, yerel Git ağacımızın şöyle göründüğünü varsayın:

1
2
3

    X

    |

ABC

X ile gösterilen Git HEAD’imizde yerel, taahhüt edilmemiş değişikliğimizi gösterir C.

“Adlı taahhüdü geri almak içinC “Bir hata nedeniyle, git reset komutunu çalıştırabiliriz.

Dosya izleme gereksinimlerine bağlı olarak, git reset komutunu farklı bayraklarla kullanmak isteyeceksiniz.

Durum 1: Git reset kullan ve hazırlama alanından dosyaları kaldır

Git geçmişimizi görmek için git reflog komutunu kullanabiliriz.

Git ls-files’ı kullanarak projemiz için şu anda hazırlanmış olan dosyaları görebiliriz:

1
2
3
4
5
6
7
8
9
10

$ Git reflog

f326d13 KAFA @ {0}: taahhüt: C Eklendi

358d535 KAFA @ {1}: taahhüt: B Eklendi

00b61d5 HEAD @ {2}: taahhüt (başlangıç): A eklendi

 

$ Git ls dosyaları

bir
B
C
X

İşlemden bu yana izlenen dosyaları tutmak için C, ancak bunları Git dizininden kaldırın, şunları çalıştırabilirsiniz:

1 Git sıfırlama KAFA ~ 1

HEAD öncesi taahhüdü kaldırmak için HEAD ~ 1’in Git stilini kullanabilirsiniz..

HEAD ~ 5 kullandıysanız, bu HEAD öncesi beş taahhüt edilen taahhüdü kaldıracaktır.

Git dizinindeki değişiklikler, “hazırlama alanı” olarak da adlandırılır, bu nedenle Git ağacı şu şekilde olur:

1
2
3

  X

  |

A-B

Hangi bu komutlarla onaylayabiliriz:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

$ Git reflog

358d535 HEAD @ {0}: reset: HEAD ~ 1’e taşınıyor

f326d13 KAFA @ {1}: taahhüt: Eklendi C

358d535 KAFA @ {2}: taahhüt: B Eklendi

00b61d5 KAFA @ {3}: taahhüt (başlangıç): A eklendi

 

$ Git ls dosyaları

bir
B
 

$ Git durumu

Şube yöneticisinde

İzlenmeyen dosyalar:

  (Kullanım "Git add …" taahhüt edileceklere dahil etmek)

 

        C

        X

 

Git sıfırlama işlevini yalnızca işaretsiz olarak kullanırken hiçbir dosyayı kaldırmayız; sadece sahnelenmemişlerdir:

1
2

$ ls

A B C X

Bununla birlikte, sıfırladığınız taahhüt için günlük girişini kaldırırsınız, ancak:

1
2
3
4
5
6
7
8
9
10
11
12

$ Git günlüğü

taahhüt 358d535bc5e06730e61d272be34a6d0e568f42af

Yazar: Kullanıcı < [email protected]>

Tarih: Sal 10 Şub 13:54:55 2015 -0500

 

    B eklendi

 

taahhüt 00b61d53fe06ee672fa0497b175fb7bd89e26b72

Yazar: Kullanıcı < [email protected]>

Tarih: Sal 10 Şub 13:54:55 2015 -0500

 

    A eklendi

Durum 2: git reset –soft kullanın ve Dosyalardaki Değişiklikleri Koru

–Soft bayrağını kullanırsanız, izlenen dosyalarda ve Git dizininde yapılan değişiklikler korunur:

1 Git reset –soft KAFA ~ 1

Hazırlanan dosyalar bu şekilde kalır ve hiçbir dosya fiziksel olarak kaldırılmaz:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

$ Git ls dosyaları

bir
B
C
X
 

$ ls

A B C X

 

$ Git durumu

Şube yöneticisinde

Taahhüt edilecek değişiklikler:

  (Kullanım "Git reset HEAD …" değişmeden)

 

        yeni dosya: C

        yeni dosya: X

–Soft bayrağını kullanarak, sıfırlama taahhüdü için günlük girişini kaldırmaya devam edersiniz.

Durum 2: Git reset –hard kullanın ve Dosyalardaki Tüm Değişiklikleri Kaldır

–Hard bayrağını kullanırsanız, izlenen dosyalarda ve Git dizininde yapılan değişiklikler kaybolur:

1
2

$ Git reset –hard HEAD ~ 1

HEAD şimdi 3bf1b55’de eklendi B

Sıfırladığınız işlemden sonraki tüm dosyalar sahnelenmez ve fiziksel olarak kaldırılır:

1
2
3
4
5
6
7
8
9
10

$ Git ls dosyaları

bir
B
 

$ ls

A B

 

$ Git durumu

Şube yöneticisinde

taahhüt edilecek bir şey yok, çalışma dizini temiz

Sıfırladığınız işlem için Git günlük girişini yeniden kaldırırsınız.

Taahhütler Zaten Gönderilmişse git revert Kullanmaya Çalışın

Yukarıda belirtildiği gibi, değişikliklerinizi daha önce ittiyseniz ve bu değişiklikleri başka birisine çekerseniz, değişiklikleri geri almak için git reset kullanmamalısınız, bunun yerine git revert kullanın.

Ancak, gerçekten isterseniz, önceki Git işlemlerinin bazılarını silmek için önceki bölümdeki adımların aynısını uygulayabilirsiniz.

Bundan sonra, kuvvet seçeneğini kullanmak için bir git push -f yapabilirsiniz. Yine, bu tavsiye edilmez, çünkü diğer Git kullanıcılarının çeşitli depo durumları arasında ciddi çakışmalar yaratabilir.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Adblock
    detector