Çalışan bir ağaç ve dizindeki tüm taahhüt edilmemiş değişiklikleri geri almak ve ayrıca yeni oluşturulan dosya ve klasörleri kaldırmak için bir git komutu var mı?
Çalışan bir ağaç ve dizindeki tüm taahhüt edilmemiş değişiklikleri geri almak ve ayrıca yeni oluşturulan dosya ve klasörleri kaldırmak için bir git komutu var mı?
Yanıtlar:
Bu iki komutu çalıştırabilirsiniz:
# Revert changes to modified files.
git reset --hard
# Remove all untracked files and directories.
# '-f' is force, '-d' is remove directories.
git clean -fd
git clean -i
etkileşimli bir mod için.
git merge --abort
.
Yalnızca geçerli çalışma dizinindeki değişiklikleri geri almak istiyorsanız,
git checkout -- .
Bundan önce, gerçekte herhangi bir işlem yapmadan geri döndürülecek dosyaları listeleyebilirsiniz, sadece ne olacağını kontrol etmek için:
git checkout --
git reset --hard
nedir?
Çalışma dizinindeki değişiklikleri atmak için "git checkout - ..." kullanın
git checkout -- app/views/posts/index.html.erb
veya
git checkout -- *
git durumunda etiketlenmemiş dosyalarda yapılan tüm değişiklikleri kaldırır, ör.
modified: app/controllers/posts.rb
modified: app/views/posts/index.html.erb
git checkout -- *
değiştirilen dosyaların bulunduğu dizinde bulunmadıkça benim için çalışmıyor. Tüm depodaki tüm dosyaları kontrol etmek için yapmanız gerekengit checkout -- :/
git checkout -- *
, yıldız geçerli dizindeki tüm dosya ve dizinlerle Kabuk ile değiştirilir. Bu yüzden alt dizinlere gitmelidir. Benim için çalışıyor. Ama bence daha temiz olan sözdizimi ": /" 'yi vurguladığım için teşekkürler.
Önemsiz bir yol, bu iki komutu çalıştırmaktır:
git stash
Bu, değişikliklerinizi depoya taşıyacak ve sizi HEAD durumuna geri getirecektir.git stash drop
Bu, son komutta oluşturulan en son saklamayı siler.fatal: git-write-tree: error building trees Cannot save the current index state
git clean -fd
yardımcı olmadı, yeni dosyalar kaldı. Yaptığım şey tüm çalışan ağacı tamamen silmek ve sonra
git reset --hard
"Bkz Ben git benim yerel çalışma dizinini temizlemek nasıl? " Tavsiye eklemek için -x
temiz seçeneği:
git clean -fdx
Not -x
bayrağı Git tarafından yok sayılan tüm dosyaları silecektir, bu yüzden dikkatli olun (bahsettiğim cevaptaki tartışmaya bakın).
Aşağıdaki komutu kullanabileceğinizi düşünüyorum: git reset --hard
Hala kaybolmayacak gibi görünen dosyalar olabileceğini, bunların düzenlenmemiş olabileceğini, ancak git'in CRLF / LF değişiklikleri nedeniyle düzenlenmiş olarak işaretlenmiş olabileceğini lütfen unutmayın. .gitattributes
Son zamanlarda bazı değişiklikler yapıp yapmadığınızı görün .
Benim durumumda CRLF ayarlarını .gitattributes
dosyaya ekledim ve bu nedenle tüm dosyalar "değiştirilmiş dosyalar" listesinde kaldı. .Gitattributes ayarlarının değiştirilmesi, bunların kaybolmasına neden oldu.
En son taahhüdünüzde kopyaya geri dönmek istediğiniz taahhüt edilmemiş bir değişikliğiniz varsa (yalnızca çalışma kopyanızda), aşağıdakileri yapın:
git checkout filename
git rm filename
, ve çalışmıyor. error: pathspec 'filename' did not match any file(s) known to git.
git rm
olduğunugit checkout master -- filename
Git 2.23, git restore
çalışan ağaç dosyalarını geri yükleme komutunu verdi.
https://git-scm.com/docs/git-restore
Geçerli dizindeki tüm dosyaları geri yüklemek için
geri yükle.
Tüm C kaynak dosyalarını dizindeki sürümle eşleşecek şekilde geri yüklemek isterseniz,
git restore '* .c'
Deponuzda yapılan tüm taahhüt edilmemiş değişiklikleri geri alabilen aşağıdaki git komutunu kullanabilirsiniz:
git checkout .
Misal:
ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: application/controllers/Drivers.php
modified: application/views/drivers/add.php
modified: application/views/drivers/load_driver_info.php
modified: uploads/drivers/drivers.xlsx
no changes added to commit (use "git add" and/or "git commit -a")
ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git checkout .
ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean
Güvenli ve uzun bir yol:
git branch todelete
git checkout todelete
git add .
git commit -m "I did a bad thing, sorry"
git checkout develop
git branch -D todelete