如何在不影响工作树的情况下恢复提交?

问题描述 投票:0回答:1

我想要一个可以在不同分支中恢复提交的脚本,而不依赖于使用我的本地树。

我希望能够在有一棵脏树的同时运行这个脚本而不用担心它。

根据 git 文档,

git revert
仅适用于本地树。所以我认为这可能需要以某种方式创建一个 git 树,它是不使用 git revert 的恢复提交?

这可能吗?

git
1个回答
0
投票

我想出了这个解决方案。它确实使用您的本地工作树,但会隐藏所有更改然后返回它们,因此即使您的树很脏,它仍然可以正常工作。

git commit --allow-empty -am "WIP"
git checkout -b tempLocalBranch origin/remoteBranch
git revert --no-edit $sha
git push origin tempLocalBranch:remoteBranch
git checkout -
git branch -D tempLocalBranch
git reset HEAD~1

基本上提交工作树上的内容(如果没有更改,则允许为空),然后根据要恢复的远程分支签出临时分支。应用还原,然后推回到远程分支。然后切换回您正在处理的上一个分支。删除临时分支并应用软重置以删除您所做的 WIP 提交。

© www.soinside.com 2019 - 2024. All rights reserved.