Bir git deposunu klonladım ve bir şubeye baktım. Üzerinde çalıştım ve daha sonra orijinal kopyayı istediğim gibi tüm yerel değişikliklerimi kaldırmaya karar verdim.
Kısacası, yerel değişikliklerimi kaldırmak için aşağıdaki iki komutu yapmak zorunda kaldım
git checkout .
git clean -f
Sorum şu,
(1) Bu, yerel değişikliklerden kurtulmada doğru yaklaşım mı yoksa lütfen bana doğru yaklaşımı bildirin.
(2) git reset --hard
bu komut olmadan bile sıfırlayabildiğim için ne zaman kullanacağız
Teşekkürler
* Çözüm: Büyük Düzenlemeler: 03/26: * Belirsiz terimlerin çoğunu git'e özgü terminoloji ile değiştirildi [izlenen / izlenmeyen / aşamalı / yerleştirilmemiş]
Yerel değişiklikler yaptığımızda yalnızca üç dosya kategorisi olabilir:
Tür 1. Aşamalı İzlenen dosyalar
Tür 2. İşaretlenmemiş İzlenen dosyalar
Tür 3. İşaretlenmemiş İzlenmemiş dosyalar, yani İzlenmemiş dosyalar
- Aşamalı - Hazırlama alanına taşınanlar / Dizine eklendi
- İzlenen - değiştirilen dosyalar
- İzlenmemiş - yeni dosyalar. Her zaman işaretsiz. Sahnelendiğinde bu, izlendikleri anlamına gelir.
Her komutun yaptıkları:
git checkout .
- SADECE İşaretlenmemiş İzlenen dosyaları kaldırır [Tip 2]git clean -f
- SADECE İzlenmemiş İzlenmemiş dosyaları kaldırır [Tip 3]git reset --hard
- YALNIZCA Aşamalı İzlenen ve Denetlenmeyen İzlenen dosyaları kaldırır [Tip 1, Tip 2]git stash -u
- Tüm değişiklikleri kaldırır [Tip 1, Tip 2, Tip 3]
Sonuç:
Her ikisini de kullanabileceğimiz açık
(1) combination of `git clean -f` and `git reset --hard`
VEYA
(2) `git stash -u`
istenen sonucu elde etmek için.
Not: Stashing, kelimesi 'Belirli bir yerde güvenli ve gizli bir şekilde (bir şey) saklayın' anlamına gelir. Bu her zaman kullanılarak alınabilir git stash pop
. Yukarıdaki iki seçenek arasında seçim yapmak geliştiricinin çağrısıdır.
Teşekkürler Christoph ve Frederik Schøning.
Düzenleme: 03/27
Ben ' dikkat ' notu koymaya değer olduğunu düşündümgit clean -f
git clean -f
Geri dönüş yok. Yapacağınız hasarı önizlemek için -n
veya --dry-run
düğmesini kullanın .
Dizinleri de kaldırmak istiyorsanız, git clean -f -d
Yalnızca yok sayılan dosyaları kaldırmak istiyorsanız, git clean -f -X
Yok sayılan ve yok sayılan dosyaları kaldırmak istiyorsanız, git clean -f -x
reference: daha fazla bilgi git clean
: Geçerli Git çalışma ağacından yerel (izlenmemiş) dosyaları nasıl kaldırırım?
Düzenleme: 05/20/15
Bu daldaki tüm yerel taahhütleri silme [Yerel taahhütleri kaldırma]
Bu daldaki tüm yerel taahhütleri atmak için, yerel dalın bu dalın "yukarı akış" değeriyle aynı olmasını sağlamak için, git reset --hard @{u}
Referans: http://sethrobertson.github.io/GitFixUm/fixup.html
veya git reset --hard origin/master
[yerel şube varsa master
] yapın
Not: 2015/06/12 Bu değil yinelenen olarak işaretlenmiş diğer SO sorunun bir kopyası. Bu soru, yerel GIT değişikliklerinin nasıl kaldırılacağını [eklenen bir dosyayı kaldırma, mevcut dosyaya eklenen değişiklikleri kaldırma vb. Ve çeşitli yaklaşımları; Diğer SO iş parçacığında yalnızca yerel işlemin nasıl kaldırılacağı ele alınmaktadır. Bir dosya eklediyseniz ve bunu tek başına kaldırmak istiyorsanız, diğer SO iş parçacığı bu konuda tartışmaz. Bu yüzden bu diğerinin kopyası değil]
Düzenleme: 23/06/15
Zaten uzak bir depoya yönlendirilmiş bir taahhüt nasıl geri alınır?
$ git revert ab12cd15
Düzenleme: 09/01/2015
Yerel şubeden ve uzak şubeden önceki bir taahhüdü silme
Vaka: Sadece yerel şubenizde bir değişiklik yaptınız ve hemen uzak şubeye ittiniz, Aniden fark ettiniz, Oh hayır! Bu değişikliğe ihtiyacım yok. Şimdi ne yapmalı?
git reset --hard HEAD~1
[bu taahhüdü yerel şubeden silmek için]
git push origin HEAD --force
[her iki komutun da yürütülmesi gerekir. Uzak şubeden silmek için]
Şube nedir? Şu anda teslim alınmış şubesidir.
Düzenle 09/08/2015 - Yerel git birleştirmeyi kaldır :
Ben duyuyorum master
şube ve birleştirilmiş master
yeni çalışma şube ile şubephase2
$ git status
# On branch master
$ git merge phase2
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 8 commits.
S: Bu birleşmeden nasıl kurtuluruz? Denendi git reset --hard
ve git clean -d -f
İkisi de çalışmadı.
İşe yarayan tek şey aşağıdakilerden biridir:
$ git reset --hard origin/master
veya
$ git reset --hard HEAD~8
veya
$ git reset --hard 9a88396f51e2a068bb7
[sha taahhüt kodu - bu, tüm birleştirme işlemleriniz gerçekleşmeden önce mevcut olan koddur]
git stash -a
[veya --all] yok sayılan ve izlenmeyen dosyaları da saklar. git clean -x
yok sayılan dosyaları da temizler. git clean -X
yalnızca yok sayılan dosyaları temizler.