我需要还原提交,但前提是不存在冲突。像git revert --only-if-no-conflicts
这样的东西,但没有这样的选项,没有--dry-run
(--no-commit
仍然会影响我需要避免的工作副本。)
在这种情况下,从脚本运行还原,因此我无法手动检查是否存在冲突。我可以从脚本中以某种方式做到这一点,但在深入研究之前,是否有一些聪明的方法让Git只有在没有冲突的情况下才能成功恢复?
答案 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(我不确定这个警告的相关性)。我用这些来源进行了三次检查