可以干一个`git revert`?

时间:2014-02-20 12:05:47

标签: git git-revert

我需要还原提交,但前提是不存在冲突。像git revert --only-if-no-conflicts这样的东西,但没有这样的选项,没有--dry-run--no-commit仍然会影响我需要避免的工作副本。)

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

2 个答案:

答案 0 :(得分:2)

脚本应该:

分支,还原,观察。

如果您不想触摸工作树,可以使用 git-new-workdir 创建新目录,例如 /tmp

那你可以说清楚,

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

返回原始分支并对观察进行操作,即如果分段分支上的恢复成功则恢复。

答案 1 :(得分:0)

git revert 将在顶部添加一个新的提交。因此,您可以执行 git reset --soft HEAD~1 来撤消最新提交。

但是:来源 2 关于 revert 说:

<块引用>

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

我不是 git master(我不确定这个警告的相关性)。我用这些来源进行了三次检查