Repo

2011-02-16 5 views
34

repo status ile yapılan değişiklikler nasıl kaldırılır bana bir çok istenmeyen değişiklik gösterir.Repo

Her projeye girip git reset --hard'u kullanırsam çoğaltılamaz.

Tüm değişiklikleri repo reset --hard gibi bir repo kullanarak sıfırlamanın bir yolu var mı?

cevap

-7

tüm değişiklikleri geri almak şöyle repo komutunu kullanabilirsiniz:

repo sync -d 

Bu orijinal revizyon için tüm değişiklikler geri alınacak.

Ya Version Control with Repo and Git

Düzenlendi belirtildiği gibi başka git kullanabilirsiniz:

komut yukarıda o zaman sürümüyle sadece çalışıyor.

çalışma komut şöyledir:

repo forall -vc "git reset --hard" 
+3

'Repo senkronizasyonunu okuyunuz. "repo durumu" hala tüm istenmeyen değişikliklerimi gösterdi. –

+1

Aslında bu başka bir cevap vermeliydin. İnsanları bu şekilde karıştırır – davidbaumann

1

documentation göre repo komut yalnızca destekler:

  • init
  • senkron
  • başlangıç ​​
  • durum
  • yükleme

istenmeyen değişiklikleri zaten yüklemiş ise inci e deposu ve deponun kendisini git reset'u kullanabileceğiniz eski bir revizyona geri dönmesini istiyorsunuz.

İstemci tarafında yaptığınız ve repo'ya henüz yüklememiş olduğunuz değişiklikleri geri almak isterseniz, git revert yapabilirsiniz.

3
#!/bin/bash 
for gitdir in $(find . -name .git); do 
    pushd $(dirname $gitdir) 
    git reset --hard 
    popd 
done 
+0

repo forall rans yorumunda olduğu gibi – sherpya

+0

Bazen çalışma kopyasımda, “repo forall” tüm git ağacını kapsamaz. Bu yaklaşım büyük ölçüde işe yarıyor. – alijandro

+0

Teşekkürler! Bu komutu sadece 'repo forall' her git repo'yu düzeltmek için görünmüyordu. –

8

aşağıda sözdizimi ile komuta forall repo kullanmak ve bana izleme dosyaları sıfırlamak için yardımcı olur. foo meşru şube adı ile değiştirilmelidir

repo forall -p -c 'git checkout -f foo' 

.

75

Bu

repo forall -vc "git reset --hard" 

çok faydalı ben şeyler bu tür kullanmak komut, ne burada her şey demek olduğunu? Tüm reposlar için Yürütme .

- temiz durumuna çalışma klasörü dönmek için bir ihtiyaç varsa o

-c "COMMAND TO EXECUTE" Eğer

+0

Doğru cevap budur. Eklemek gerekirse, çıktıyı bastırmak istiyorsanız, -v argümanını atlamamak benim için çalışmadı, çıktı hala çıktı. Çıkışı bastırmak için '&>/dev/null' eklemek zorunda kaldım. – Anton

+0

'-v', v1.12.37'den itibaren artık gerekli görünmüyor. –

13

istediğiniz gerçek komut komutunun çıktısını yazdırması amacıyla v, ayrıntılı bir yerel değişiklikler ve hiçbir izlenmeyen dosyaları yok nereye (repo durum hiçbir şey göründüğü yeri yani), bu iki yaklaşım repo sync and deleted/modified files

repo forall -c 'git reset --hard ; git clean -fdx' 
yararlı buldu

veya bu yeni bir yerel Repo başlatma ve senkronize eşdeğer değildir

rm -rf * ; repo sync -l 
// note that .repo is preserved after that 

Not (ör Eğer ne olup bittiğini emin değilseniz zulası

) korunur, tam konuyu -d` benim için işe yaramadı repo sync and deleted/modified files

+0

Cool, Bu yöntemi beğendim: ".git" mevcut olması koşuluyla "rm -rf *; git checkout -f" gibi hızlı ve temiz. –