【发布时间】:2018-06-21 21:12:29
【问题描述】:
我们有一个大 回购...并推动加密。所以git reset --(whatever) 需要很长时间。让我们想象一个情况:
- 你在一个特性分支上
- 您更改了一些配置
- 你想
checkout master a-clean && pull - 无法立即签出 master,因为您已经进行了一些更改
我知道有几个选项可以恢复这些更改:
-
git reset --hard--> 慢 -
根目录中的
git checkout .--> 似乎与reset --hard 相同,但速度也相同 -
git stash- 需要更长的时间 -
git status然后git checkout -- (filename)。现在,这很快,但您必须对每个文件重复一遍!
我自己和 bash 不太了解对方,所以像git status | grep modified: | awk "git checkout -- {%2}" 这样花哨的事情超出了我目前的知识范围。
但是,也许 mgit 中有一个命令执行 git checkout -- 对所有“修改:”文件?
【问题讨论】:
-
一次提交的硬重置真的需要这么长时间吗?无论如何,还有另一种可能性,即您希望将工作保留在当前目录中(也可能在 stage 中)。在这种情况下,
git stash就派上用场了。 -
谢谢@TimBiegeleisen 我知道存储,它需要更长的时间。我会用它来更新问题。
-
可能类似于
git status -s | grep -Po '^ ?M ?\K.*' | xargs git checkout -- -
我认为多次运行
git checkout不会比git reset --hard快。在这两种情况下,你最终都会做同样的事情。 -
@larsks 我也不这么认为,但是 xargs 通过放置一个 shell 命令可以包含的尽可能多的参数来限制调用的数量,并且来自问题
git checkout .whas slow
标签: bash git awk grep git-bash