【问题标题】:How to discard changes using repo如何使用 repo 丢弃更改
【发布时间】:2011-06-28 02:00:39
【问题描述】:

repo status 向我展示了许多不需要的更改。

如果我进入每个项目并使用git reset --hard,它将被重复。

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

【问题讨论】:

    标签: reset repo


    【解决方案1】:

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

    repo sync -d
    

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

    已编辑:

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

    工作命令是:

    repo forall -vc "git reset --hard"
    

    命令和选项说明

    • 全部

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

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

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

    -p:在指定命令的输出之前显示项目标题。这是通过将管道绑定到命令的标准输入、标准输出和 sterr 流,并将所有输出通过管道传输到一个连续的流中,即 显示在单个寻呼机会话中。

    -v:显示命令写入标准错误的消息。

    更多信息请参考repo document

    【讨论】:

    • repo sync -d 对我不起作用。 repo status 仍然显示了我所有不需要的更改。
    • 其实你应该把这个作为另一个答案。这样会迷惑人
    【解决方案2】:
    #!/bin/bash
    for gitdir in $(find . -name .git); do
        pushd $(dirname $gitdir)
        git reset --hard
        popd
    done
    

    【讨论】:

    • repo forall as in rans comment
    • 有时在我的工作副本中,repo forall 并没有涵盖所有的 git 树。这种方法效果很好。
    • 谢谢!我只需要使用这个命令,因为 repo forall 似乎并没有修复每个 git repo。
    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

      这是我用来做这类事情的命令,非常有用

      repo forall -vc "git reset --hard"
      

      这里的一切是什么意思?

      repo forall 将为所有 repos 执行。

      -v 很冗长,所以它会打印命令的输出

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

      【讨论】:

      • 这是正确答案。只是补充一点,如果你想抑制输出,省略 -v 参数对我不起作用,它仍然打印输出。我不得不添加&>/dev/null 来抑制输出。
      • 从 v1.12.37 开始,似乎不再需要 -v
      【解决方案5】:

      如果需要将工作文件夹恢复到没有本地修改且没有未跟踪文件的干净状态(即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 和同步(例如,存储被保留)

      如果您不确定发生了什么,请阅读完整主题repo sync and deleted/modified files

      【讨论】:

      • 酷,我喜欢这种方法:快速而干净,就像 "rm -rf *; git checkout -f" 只要 ".git" 存在。
      猜你喜欢
      • 2012-05-25
      • 2015-03-08
      • 2014-01-24
      • 2021-08-05
      • 2019-10-12
      • 2020-06-01
      • 2013-12-12
      • 2016-10-28
      相关资源
      最近更新 更多