我需要恢复提交,但前提是不会发生冲突。类似git revert --only-if-no-conflicts
但没有这样的选项并且没有--dry-run
(--no-commit
仍然会影响我需要避免的工作副本)。
在这种情况下,还原是从脚本运行的,因此我无法手动检查是否存在冲突。我可以从脚本中以某种方式做到这一点,但在深入研究之前,是否有一些聪明的方法可以让 Git 只有在没有冲突的情况下才能成功进行还原?
我需要恢复提交,但前提是不会发生冲突。类似git revert --only-if-no-conflicts
但没有这样的选项并且没有--dry-run
(--no-commit
仍然会影响我需要避免的工作副本)。
在这种情况下,还原是从脚本运行的,因此我无法手动检查是否存在冲突。我可以从脚本中以某种方式做到这一点,但在深入研究之前,是否有一些聪明的方法可以让 Git 只有在没有冲突的情况下才能成功进行还原?
脚本应该:
分支,还原,观察。
如果您不想修改工作树,可以使用 . 创建一个新目录git-new-workdir
,例如在/tmp
.
然后你可以很清楚地,
new branch $ git revert --no-edit ce6982e || \
{ export REVERT_FAILED=yes; git revert --abort; }
回到原来的分支并对观察采取行动,即,如果暂存分支上的恢复成功,则恢复。
git revert
将在顶部添加一个新的提交。所以你可以git reset --soft HEAD~1
撤消最新的提交。
但是:关于还原的来源 2说:
这些命令(cherry-pick 和 revert)构建了一个新的提交,它不保留任何指向旧提交的父信息。小心使用。
我不是 git 大师(我不确定这个警告的相关性)。我用这些来源对它进行了三重检查