2011-02-16 75 views
34

repo status向我展示了許多不需要的更改。如何使用回購廢棄更改

如果我輸入每個項目並使用git reset --hard,它將被複制。

有沒有辦法使用回購重置所有更改,如repo reset --hard

回答

-7

可以使用repo命令如下恢復所有的更改:

repo sync -d 

這都將更改恢復到原來的版本。

否則,您可以使用git作爲Version Control with Repo and Git

編輯說:

上面的命令與版本當時唯一的工作。

工作的命令是:

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

`回購同步-d`並沒有爲我工作。 `回購狀態'仍然顯示我所有不需要的變化。 – 2012-07-30 19:47:28

+1

其實你應該做出這個另一個答案。以這種方式迷惑人 – davidbaumann 2017-11-22 18:27:55

1

按照documentationrepo腳本只支持:

  • 初始化
  • 同步
  • 開始
  • 狀態
  • 上傳

如果不需要的變化已經上傳到th e知識庫,並且您希望知識庫本身可以返回到早期版本,您可以使用git reset

如果您想撤消您在客戶端進行的尚未上傳到回購站的更改,您可以執行git revert

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

回購所有在rans評論 – sherpya 2012-11-02 13:38:25

+0

有時在我的工作副本中,`repo forall`不包括所有的git樹。這種方法很有效。 – alijandro 2016-05-27 00:22:43

8

我使用回購FORALL與下面的語法命令,它可以幫助我重新設置跟蹤文件。

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

其中foo應該被替換爲合法的分支名稱。

75

這是我使用這樣的事情的命令,非常有用

repo forall -vc "git reset --hard" 

意味着這裏的一切是什麼?

repo forall將執行所有回購。

的 - v很冗長,所以將打印命令的輸出

-c "COMMAND TO EXECUTE"是你想要

13

實際的命令。如果有必要的工作文件夾恢復到清潔狀態在這裏你沒有本地修改,並沒有未跟蹤文件(即其中回購狀態顯示什麼),我發現這兩種方法是有用的repo sync and deleted/modified files

repo forall -c 'git reset --hard ; git clean -fdx' 

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

注意,這是不等同於初始化一個新的本地回購和同步(例如藏匿被保留)

如果你不知道是怎麼回事,請閱讀完整牙repo sync and deleted/modified files