Soru Dosyalar ve klasörler dahil olmak üzere kabul edilmeyen değişiklikler nasıl geri alınır?


Çalışan bir ağaç ve dizindeki tüm değiştirilmemiş değişiklikleri geri almak ve yeni oluşturulan dosyaları ve klasörleri kaldırmak için git komutu var mı?


881
2018-04-27 16:06


Menşei


Olası kopya Git'deki hesaplanmamış değişiklikleri nasıl atıyorsunuz? - vusan


Cevaplar:


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

1478
2018-04-28 02:37



iyi bir fikir 'git temiz -nd' çalıştırmak için gitmeden önce önizlemesini temizlemek için temiz olduğundan emin olmamanız gereken dosyalar ya da dizinler kaldırılacak. - jpwynn
Birisi dokümanlar için bir yolculuk kaydedin: -F kuvvet, -d dizinleri kaldırır, -n kuru çalışma (aynı zamanda --dry-run; henüz bir şey yapmadan çıktı göster) - Aaron Campbell
git clean -i interaktif mod için. - galath
Etiketlenmemiş dosyalarımı sıfırlamadı, önce onları sahnelemeliydim. - Áron Lőrincz
@IgorGanapolsky Muhtemelen birleşme çatışmasının ortasındasınız. Koşmayı dene git merge --abort. - htanata


Değişiklikleri yalnızca geçerli çalışma dizininde geri almak isterseniz,

git checkout -- .

Ve bundan önce, sadece ne olacağını kontrol etmek için herhangi bir işlem yapmadan geri alınacak dosyaları listeleyebilirsiniz:

git checkout --

477
2018-06-21 04:41



Bunu denediğimde "hata: pathspec" yazdım. git ile bilinen herhangi bir dosya (lar) ile eşleşmedi. - Mike K
Bu ve arasındaki fark nedir git reset --hard? - Felipe Almeida
'git reset --hard' hem aşamalı hem de taramalı değişiklikleri geri alırken, 'git checkout'. yalnızca gözlemlenmemiş değişiklikleri geri alır - divideByZero
Son derece hassas! - MayureshG
git checkout - sadece geri alınacak dosyaları listeler (hiçbir eylem, sadece liste). Git checkout yapmadan önce hangi dosyaların etkileneceğini görmek istiyorsanız bu yararlı olur. - algorithmic


Çalışma dizinindeki değişiklikleri silmek için "git checkout - ..." kullanın

git checkout -- app/views/posts/index.html.erb

veya

git checkout -- *

sınıflandırılmamış dosyalarda yapılan tüm değişiklikleri git durumundaki gibi kaldırır.

modified:    app/controllers/posts.rb
modified:    app/views/posts/index.html.erb

92
2018-03-13 01:16



git checkout -- * değiştirilen dosyaların bulunduğu dizinde olmadıkça benim için çalışmaz. Tüm depodaki tüm dosyaları kontrol etmek için yapmanız gerekir git checkout -- :/ - waldyrious
İçinde git checkout -- *, yıldız, geçerli dizindeki tüm dosyalar ve dizinler ile Shell tarafından değiştirilir. Bu yüzden alt dizinlere gitmeli. Benim için çalışıyor. Ancak, fikrimce daha net görünen ": /" sözdizimini vurguladığınız için teşekkürler. - mcoolive


Önemsiz bir yol, bu iki komutu çalıştırmaktır:

  1. git stash  Bu değişikliklerinizi depoya taşıyacak ve sizi BAŞBAKAN durumuna geri getirecektir.
  2. git stash drop  Bu, son komutta oluşturulan son saklamayı siler.

42
2017-07-18 09:20



Bu, kabul edilmeyen değişiklikler için, yalnızca taahhüt edilen değişiklikler için çalışmaz. - b0xxed1n
Kabul edilmeyen değişiklikler için kullandım ve işe yarıyor. - Paul D. Eden
@ b0xxed1n Stashing tümüyle ilgisiz değişiklikler hakkında ve açıkçası onlar için çalışıyor. - T J
Git stash, istenmeyen değişiklikleri kaydetmek için yapıldı, böylece .. onları taahhüt etmeden kaydedin. - Rob Quist
git stash aşağıdaki hatayla sonuçlanır: fatal: git-write-tree: error building trees Cannot save the current index state - Igor Ganapolsky


git clean -fd

yardımcı olmadı, yeni dosyalar kaldı. Yaptığım şey tüm çalışan ağacı silip ...

git reset --hard

Görmek "Yerel çalışma dizinimi git'te nasıl temizlerim?"eklemek için tavsiye -x temizleme seçeneği:

git clean -fdx

Not  -x bayrak, Git tarafından yok sayılan tüm dosyaları kaldıracaktır, bu yüzden dikkatli olun (bkz. yanıtta tartışmaya bakın).


14
2017-10-15 06:57



-fdx nedir? "kuvvet, dizin ve x nedir? - Adi Prasetyo
@AdiPrasetyo -x bayrağı da göz ardı edilen tüm dosyaları kaldırır; istenmeyen bir etki olabilir bu yüzden cevabımı güncelledim. - Fr0sT
Hala yeniden yapılamıyorum. Ben hatayı alıyorum: hata: Değişiklikler birleştirilemedi. Yama 0003'te başarısız oldu Başarısız olan düzeltme ekinin kopyasına geri dönün. - Igor Ganapolsky


Aşağıdaki komutu kullanabilirsiniz: git reset --hard


11
2018-04-27 16:10



hhmm ... Bunu yaptım ama dosyalarım hala orada. Sonra bir şey yapmalı mıyım? - MEM
Git sıfırlaması sadece çalışan ağaçtaki istenmeyen değişiklikleri geri alır. Yeni dosya ve klasörleri kaldırmayacak. Bunu git ile nasıl yapacağından emin değilim - Josnidhin
Yani, yeni bir dosya ve klasör ekleyerek bir sistem dizinini değiştirirsek ve bu dizini bir önceki duruma (w / out bu dosyalar ve klasörler) geri döndürmek istiyorsak, bunu git ile yapamayız. Yani elimizden gelenin en iyisi dosya durumlarını geri almak mı? Ancak bir dosya oluşturduktan sonra, el ile yapmazsak bu dosyayı kaldıramaz mıyız? - MEM


Yine de, görünmeyecek gibi görünen dosyalar olabileceğini lütfen unutmayın - bunlar düzenlenmemiş olabilir, ancak git CRLF / LF değişiklikleri nedeniyle onları düzenlenmiş olarak işaretlemiş olabilir. Bazı değişiklikler yapıp yapmadığınızı görün .gitattributes son günlerde.

Benim durumumda CRLF ayarlarını ekledim .gitattributes dosya ve tüm dosyalar bu nedenle "değiştirilmiş dosyalar" listesinde kalmıştır. .Gitattributes ayarlarının değiştirilmesi, bunların kaybolmasına neden oldu.


5
2017-07-19 10:07





Güvenli ve uzun bir yol:

  1. git branch todelete
  2. git checkout todelete
  3. git add .
  4. git commit -m "I did a bad thing, sorry"
  5. git checkout develop
  6. git branch -D todelete

-2
2017-11-19 02:08





kullanın:

git reset HEAD filepath

Örneğin:

git reset HEAD om211/src/META-INF/persistence.xml

-3
2018-02-09 13:18





Genellikle iyi çalışan bu şekilde kullanırım:

mv fold/file /tmp
git checkout fold/file

-3
2018-04-08 07:17



Bu tam olarak 357 "olanın" teklif ettiği adamla aynı. Sadece yeni teslim alınmış dosyanın bir yedeğini bile oluşturursunuz. - Matthias