Git'in değişiklikleri geri almanın 4 aşaması

Git'in doğumundan bu yana 12 yıl geçmiş olmasına ve internette git ile ilgili sayısız makale olmasına rağmen, hala (ben dahil) işlevlerini tam olarak kavrayamayan birçok insan var. Aşağıdaki giriş sadece benim kişisel git anlayışıma dayanmaktadır ve git cümlesine tam olarak uymayan bazı kelimeler uydurmuş olabilir. Amaç sadece git'i popüler hale getirmektir, böylece yeni başlayanlar git ile nasıl hızlı bir şekilde başlayacaklarını kabaca anlayabilirler. Aynı zamanda, aşağıdaki tüm tartışmalarda, ana şube yöneticisi durumunda olan tek bir dalın kullanıldığını varsayıyoruz.Bu yaklaşım git belirtimine uymasa da, gerçekte çoğu kullanıcı doğrudan ana dal üzerinde çalışmaktadır. Bu yüzden burada çeşitli dalların daha karmaşık durumlarını tanıtmayacağız veya etiket işlemlerini de dahil etmeyeceğiz, sadece en basit ana dala nasıl geri dönüleceğinden bahsedeceğiz.

temel kavram

3 adım

Normal şartlar altında, iş akışımız yukarıdaki şekildeki üç ok çizgisine karşılık gelen üç adımdan oluşur:

git ekle.

git commit -m "yorum"

git itme

git add Tüm dosyaları geçici depolama alanına koyun;

git commit, tüm dosyaları geçici depolama alanından yerel depoya gönderir;

git push, tüm dosyaları yerel depodan uzak depoya iter.

4 bölge

Git'in kafa karıştırıcı olmasının ana nedeni, svn gibi geleneksel sürüm yönetimi araçlarına kıyasla, bir aşamalandırma alanı (Stage) kavramını tanıtmasıdır.Bu ek kavram nedeniyle, birçok insanın kafası karışır. Aslında, yeni başlayanlar için, her bir bölgenin özel olarak nasıl çalıştığını önemsememize gerek yok ve yalnızca 4 bölgenin olduğunu bilmemiz gerekiyor:

Çalışma alanı

Sahne alanı (Sahne)

Yerel Depo

Uzak Depo

5 eyalet

Yukarıdaki 4 alanda, her alana başarılı bir şekilde girildikten sonra bir durum oluşturulacaktır, artı başlangıç durumu, toplam 5 durum vardır. Aşağıda bu 5 durumu sırasıyla adlandırıyoruz:

Değiştirilmemiş (Menşei)

Değiştirilmiş

Aşamalı (Aşamalı)

Taahhütlü

İtildi (İtildi)

Kontrol edin ve değiştirin

Temel kavramları anladıktan sonra, bir hata yaptıktan sonra nasıl iptal edileceğinden bahsedelim. Her şeyden önce, bu 3 adımın her birinde neyin değiştirildiğini nasıl kontrol edeceğimizi anlamalıyız ve ardından değişikliğin başarılı olup olmadığını değerlendirebiliriz. Kontrol etme ve değiştirme için ikinci düzey komutlar aynıdır, hepsi farklıdır, ancak parametreler farklıdır.

Değiştirildi, aşamalı değil

git fark

Öncelikle, dosyayı tarayıcıya kaydedip de git add yapmadıysak bir göz atalım.Önceden, hangi değişikliklerin yapıldığını nasıl kontrol edebiliriz? Bir deney yapmak için rastgele bir dosya alalım:

Dosyanın başlangıcında ikinci satıra rastgele 4 numara 1234 ekledik ve diske kaydettik. Şu anda dosya değiştirilmiş duruma girdi ancak henüz geçici depolama alanına girmedi. Git diff çalıştırdık ve sonuçlar aşağıdaki gibiydi:

diff --git a / index.md b / index.md

dizin 73ff1ba..1066758100644

--- a / index.md

+++ b / index.md

@@ -1,5 +1,5 @@

---

-layout: ana

+ 1234layout: ana

siyah renk

---

Git diff'in sonucu bize hangi dosyaların değiştirildiğini söyler.

Geçici olarak saklandı, gönderilmedi

git diff - önbelleğe alınmış

Şimdi değişiklikleri evreleme alanına koyuyoruz ve bir göz atıyoruz. Önce git add. Komutunu çalıştırın, ardından git diff'i çalıştırın, sonuç bulamayacaksınız:

Bu, git diff komutunun yalnızca çalışma alanımız ve hazırlama alanı arasındaki farkı kontrol ettiği anlamına gelir.Eğer hazırlama alanı ile yerel depo arasındaki farkı görmek istiyorsak, git diff --cached parametresini eklememiz gerekir:

diff --git a / index.md b / index.md

dizin 73ff1ba..1066758100644

--- a / index.md

+++ b / index.md

@@ -1,5 +1,5 @@

---

-layout: ana

+ 1234layout: ana

siyah renk

---

Şu anda gördüğümüz fark, hazırlık alanı ile yerel depo arasındaki farktır.

Gönderildi, aktarılmadı

git diff ana kaynağı / ana

Şimdi, aşamalandırma alanından yerel depoya değişiklikleri gönderiyoruz ve farklılıklara bakıyoruz. Önce git commit'i çalıştırın ve sonra git diff --cached'i çalıştırın, fark yok, git diff master origin / master'ı çalıştırın, farkı görebilirsiniz:

Burada, ana yerel deponuz ve menşe / ana, uzak deponuzdur. Ana, ana dal anlamına gelir.Hepimiz ana şube üzerinde çalıştığımız için, burada her iki taraf da ana birimdir ve başlangıç uzaklığı temsil eder.

Düzenlemeyi geri al

Çeşitli değişikliklerin nasıl kontrol edileceğini anladıktan sonra, çeşitli geri alma işlemlerini denemeye başladık.

Değiştirildi, aşamalı değil

Dosyayı sadece düzenleyicide değiştirirsek, ancak git add çalıştırmadıysak, şu anda dosyamız hala çalışma alanındadır ve geçici depolama alanına girmemişse, kullanabiliriz:

git checkout.

veya

git sıfırlama - sert

Geri alma işlemini gerçekleştirmek için.

Gördüğünüz gibi, git checkout'u çalıştırdıktan sonra, değişiklik geri alındı ve git diff'te hiçbir şey yok.

Bir çift zıtlığın zıtlığı git add. Git checkout. Değişikliği yaptıktan sonra, ileriye doğru bir adım atmak ve değişikliğin geçici depolama alanına girmesine izin vermek istiyorsanız git add komutunu çalıştırın.Geri bir adım atmak ve değişikliği geri almak istiyorsanız git checkout'u çalıştırın.

Geçici olarak saklandı, gönderilmedi

Git add. Çalıştırdınız, ancak git commit -m "comment" komutunu çalıştırmadınız. Şu anda hatanın farkına vardınız ve bunu geri almak istiyorsanız, şunları yapabilirsiniz:

git sıfırla

git checkout.

veya

git sıfırlama - sert

Git reset, değişikliği git add'den önceki duruma döndürür, yani dosyanın kendisi hala değiştirilmiş ve geçmemiş durumdadır.Değiştirilmemiş duruma dönmek istiyorsanız, git kontrolünü gerçekleştirmeniz gerekir.

Fark etmiş olabileceğiniz gibi, yukarıdaki iki adım aynı komut git reset --hard ile yapılabilir. Evet, değişikliklerinizi tek adımda değiştirilmemiş duruma geri yükleyebilen bu güçlü komuttur.

Gönderildi, aktarılmadı

Elleriniz çok hızlı. İkiniz de git add ve git commit yaptınız. Şu anda kodunuz yerel deponuza girdi ama pişman oluyorsunuz, ne yapmalısınız? Merak etmeyin, bir yolu var.

git reset - sabit kökeni / ana

Hala bu git reset --hard komutu, ancak bu sefer ek bir origin / master parametresi var. Yukarıda söylediğimiz gibi, origin / master uzak depoyu temsil ediyor. Yerel deponuzu kirlettiğiniz için uzak depoyu kullanabilirsiniz. Kodu geri alın.

İtildi

Maalesef elleriniz çok hızlı. Git add, git commit ve git push var. Şu anda kodunuz uzak depoya girdi. Neyse ki geri yüklemek istiyorsanız, yerel deponuz ve uzak deponuz eşdeğer olduğu için, yalnızca yerel depoyu geri yüklemeniz ve ardından uzak depoya zorla göndermeniz gerekir:

git reset --hard KAFA ^

git push -f

sonuç olarak

Yukarıdaki 4 durumu iptal etmek için hepimiz git reset --hard komutunu kullanıyoruz.İlk 2 durumun kullanımı bile aynıdır, bu nedenle git reset --hard komutunun kullanımında ustalaştığınız sürece, bir daha asla işlem yapma konusunda endişelenmenize gerek kalmayacak. Yanlış.

Panda Financial'ın düşük pozisyonu bankanın 100 milyonluk dip pozisyonunu ortaya çıkarıyor, pusuya uygun mu?
önceki
Sürgün yolu, tüm profesyonellerin çorak arazileri açması için özel bir oyundur.
Sonraki
Seni şiire ve mesafeli Wrangler değişiklik takdirine götürebilirim
Sıradan programcılar günlük kaydı sistemini nasıl anlar?
LOLS7 Dünya Şampiyonası'nın piyango töreni, LPL'nin karşılaşabileceği bir rakip dalgasını analiz etmek için bu gece yapılacak.
Alman Büyük Üçlüsü eşi görülmemiş bir kriz yaşıyor, bu sefer "emisyon kapısı" ndan daha ciddi!
ROE göstergesi - değer yatırımı açmanın yeni bir yolu, 16 hisseyi kilitlemek yatırım fırsatlarına yol açacak
Alpha Stelvio: ABB ile aynı yolda değil
Günlük limit yeniden başlatma - yeni bir kısa vadeli geri dönüş
Diğer üç yolu oynamanın hangi yolu çökecek? LOL oyununda zihninizi patlatacak anları sayın
Redis kaynak kodu öğreniminin Redis işlemi
Lop Nur'un Maceraları | Lu Xinping: Bir uzaylı gibi mavi vahşi doğa, şahsen görmezseniz hayal bile edemezsiniz
Uzunluğu Mercedes-Benz E'den daha uzun, ışıklar A8'den daha göz kamaştırıcı ve fiyatı 500.000'den az Lüks otomobil topluca sallanıyor mu?
Dongfeng Citroen: Nasıl daha çekici hale getirilir?
To Top