如何使用repo丢弃更改

时间:2011-02-16 03:15:24

标签: reset repo

repo status向我展示了很多不想要的变化。

如果我输入每个项目并使用git reset --hard,那将会重复。

有没有办法使用repo重置所有更改,例如repo reset --hard

5 个答案:

答案 0 :(得分:92)

这是我用于此类事情的命令,非常有用

repo forall -vc "git reset --hard"

这里的一切意味着什么?

repo forall将执行所有回购。

- v是详细的,因此它将打印命令的输出

-c "COMMAND TO EXECUTE"是您想要的实际命令

答案 1 :(得分:20)

如果需要将工作文件夹还原到清除状态,而您没有本地修改且没有未跟踪的文件(即 repo status 没有显示任何内容) ,我发现这两种方法在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

答案 2 :(得分:9)

我使用repo forall命令并使用以下语法,它可以帮助我重置跟踪文件。

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

其中foo应替换为合法的分支名称。

答案 3 :(得分:4)

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

答案 4 :(得分:-4)

您可以使用以下repo命令恢复所有更改:

repo sync -d

这会将您的所有更改还原为原始版本。

<强>编辑:

上面的命令仅适用于当时的版本。

工作命令是:

repo forall -vc "git reset --hard"

命令和选项说明

  • 的forall
  

在每个项目中执行给定的shell命令

选项(可与forall命令一起使用)

  

-c:要执行的命令和参数。该命令通过/ bin / sh进行评估,并将其作为shell传递后的任何参数   位置参数。

     

-p:在输出指定命令之前显示项目标题。这是通过将管道绑定到命令的stdin,stdout和   Sterr溪流,并将所有输出管道输送到连续流中   显示在单个寻呼机会话中。

     

-v:显示命令写入stderr的消息。

有关详细信息,请参阅repo document