5

我需要恢复提交,但前提是不会发生冲突。类似git revert --only-if-no-conflicts但没有这样的选项并且没有--dry-run--no-commit仍然会影响我需要避免的工作副本)。

在这种情况下,还原是从脚本运行的,因此我无法手动检查是否存在冲突。我可以从脚本中以某种方式做到这一点,但在深入研究之前,是否有一些聪明的方法可以让 Git 只有在没有冲突的情况下才能成功进行还原?

4

2 回答 2

3

脚本应该:

分支,还原,观察。

如果您不想修改工作树,可以使用 . 创建一个新目录git-new-workdir,例如在/tmp.

然后你可以很清楚地,

new branch $ git revert --no-edit ce6982e || \
                 { export REVERT_FAILED=yes; git revert --abort; }

回到原来的分支并对观察采取行动,即,如果暂存分支上的恢复成功,则恢复。

于 2014-02-20T12:09:56.307 回答
0

git revert将在顶部添加一个新的提交。所以你可以git reset --soft HEAD~1撤消最新的提交。

但是:关于还原的来源 2说:

这些命令(cherry-pick 和 revert)构建了一个新的提交,它不保留任何指向旧提交的父信息。小心使用。

我不是 git 大师(我不确定这个警告的相关性)。我用这些来源对它进行了三重检查

于 2021-02-14T11:56:44.733 回答