Git Reset
Son güncelleme
git reset, geçerli dalı farklı bir commit'e taşır ve moda bağlı olarak hazırlama alanını (index) ve çalışma ağacını buna uyacak şekilde günceller. Üç mod yalnızca bu güncellemenin ne kadar ileri gittiğinde farklılık gösterir: --soft dalı taşır ve durur, --mixed (varsayılan) ayrıca hazırlama alanını da sıfırlar ve --hard ayrıca çalışma dosyalarınızın üzerine yazar.
--hard commit'lenmemiş çalışmayı attığı için, çalıştırmadan önce hangi modu istediğinizi bilin. Bunları terminal playground içinde güvenle deneyin - tarayıcınızda gerçek bir shell.
Üç mod
| Mode | Moves branch | Resets staging | Resets working tree |
|---|---|---|---|
--soft | Evet | Hayır | Hayır |
--mixed (default) | Evet | Evet | Hayır |
--hard | Evet | Evet | Evet |
Söz dizimi
| Command | What it does |
|---|---|
git reset --soft HEAD~1 | Son commit'i geri al, değişiklikleri hazırlama alanında tut |
git reset HEAD~1 | Son commit'i geri al, değişiklikleri hazırlama alanından çıkarılmış tut |
git reset --hard HEAD~1 | Son commit'i geri al, değişiklikleri at |
git reset <file> | Bir dosyayı hazırlama alanından çıkar (değişikliklerini koru) |
git reset --hard origin/main | Yerel dalı uzak dalla eşleşmeye zorla |
Yaygın durumlar
| Goal | Command |
|---|---|
| Her şeyi hazırlama alanından çıkar | git reset |
| Bir dosyayı hazırlama alanından çıkar | git reset README.md |
| 3 commit geri git, çalışmayı koru | git reset --soft HEAD~3 |
| Bir commit'ten bu yana tüm yerel değişiklikleri at | git reset --hard <hash> |
Git reset SSS
--soft, --mixed ve --hard arasındaki fark nedir?
Üçü de dal işaretçinizi hedef commit'e taşır; başka neye dokundukları konusunda farklılık gösterirler.
--soft başka hiçbir şeyi değiştirmez, bu yüzden değişiklikleriniz hazırlama alanında kalır. --mixed (varsayılan) ayrıca hazırlama alanını da temizler, böylece değişiklikler hazırlama alanından çıkarılır ama dosyalarınızda kalır. --hard ayrıca çalışma ağacınızın üzerine hedef commit'e uyacak şekilde yazar ve commit'lenmemiş değişiklikleri atar.git reset ile bir dosyayı hazırlama alanından nasıl çıkarırım?
git reset <file> çalıştırın (örneğin git reset README.md) veya her şeyi hazırlama alanından çıkarmak için yol belirtmeden git reset çalıştırın. Bu, dosyayı hazırlama alanından kaldırır ama düzenlemelerinizi çalışma ağacında tutar. Daha yeni Git sürümlerinde aynı işi daha açık bir şekilde yapan git restore --staged <file> komutunu da kullanabilirsiniz.git reset --hard geri alınabilir mi?
Çalışma ağacından değil -
--hard commit'lenmemiş değişiklikleri kalıcı olarak atar. Ancak reset ile uzaklaştırdığınız commit'lenmiş çalışma genellikle kurtarılabilir: commit'in hash'ini bulmak için git reflog çalıştırın, ardından git reset --hard <hash> (veya orada bir dal oluşturun). Hiç hazırlama alanına alınmamış veya commit'lenmemiş değişiklikler kurtarılamaz, bu yüzden --hard'ı dikkatli kullanın.git reset ile git revert arasındaki fark nedir?
git reset, dalı geriye taşıyarak geçmişi yeniden yazar - yerel commit'ler için sorun değil ama zaten push ettiğiniz commit'lerde tehlikeli. git revert geçmişi olduğu gibi bırakır ve önceki bir commit'i geri alan yeni bir commit ekler ki bu paylaşılan dallar için güvenli seçenektir.Bunu çevrimiçi olarak deneyebilir miyim?
Evet.
git reset'i tarayıcınızda gerçek bir shell'de çalıştırmak için terminal playground'u açın - kurulacak bir şey yok. Coddy'nin ücretsiz etkileşimli Git kursu da sıfırlama ve değişiklikleri geri alma konusunu adım adım ele alır.