Menu
Coddy logo textTech

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

ModeMoves branchResets stagingResets working tree
--softEvetHayırHayır
--mixed (default)EvetEvetHayır
--hardEvetEvetEvet

Söz dizimi

CommandWhat it does
git reset --soft HEAD~1Son commit'i geri al, değişiklikleri hazırlama alanında tut
git reset HEAD~1Son commit'i geri al, değişiklikleri hazırlama alanından çıkarılmış tut
git reset --hard HEAD~1Son 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/mainYerel dalı uzak dalla eşleşmeye zorla

Yaygın durumlar

GoalCommand
Her şeyi hazırlama alanından çıkargit reset
Bir dosyayı hazırlama alanından çıkargit reset README.md
3 commit geri git, çalışmayı korugit reset --soft HEAD~3
Bir commit'ten bu yana tüm yerel değişiklikleri atgit 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.
Coddy programming languages illustration

Coddy ile Git öğren

BAŞLA