如何在“git重置后恢复更改”

我意识到我们的分支开发并不是很稳定,并且恢复了一些更改以调试它们。

git checkout dev
git checkout -b staged_dev
git push origin staged_dev
# go back to dev
git checkout dev
git reset 230086bf429307182ed9b35e19ad2581a3a2baf6 # last known stable state of dev
git reset --soft HEAD@{1}
git commit -m "Revert to 230086bf429307182ed9b35e19ad2581a3a2baf6" # this commit SHA = 270329c
git reset --hard
git push origin dev

这在dev之上添加了一个新的提交: 270329c

从那时起,另一个人为开发添加了一些安全的提交,并且我调试了staged_dev并添加了一些提交。 如何从开发中撤销270329c并将其他提交的staged_dev添加到开发中?

引用stackoverflow问题:恢复到在Git中由SHA哈希提交?


git reflog应该告诉你在什么地方,以便你可以从它创建一个old_dev分支。

请参阅reflog,您的安全网


你最简单的选择可能只是:

git checkout dev
git merge staged_dev
git push origin dev

如果对结果历史记录不满意,可以先将修改后的更改重新分配给“dev”分支的顶端:

git checkout staged_dev
git rebase dev
git checkout dev
git merge staged_dev

如果你希望修改后的“staged_dev”中的提交与原始230086提交的历史记录位置相同,那么你将不得不变得更加奇特,并且没有办法在不删除“dev”中的修订历史记录的情况下这样做。已经在“出处”发表 。 但如果这是你真正需要的,你可以做一些事情:

git checkout -b new-dev 230086bf  # point where "dev" diverged
git cherry-pick <first commit you want to include*>..staged_dev
git checkout -t origin/dev
git rebase new-dev
git push origin +dev

您可能想向所有人宣布他们拥有的“dev”的本地结账可能不再位于上游历史记录中。

链接地址: http://www.djcxy.com/p/18845.html

上一篇: How to bring back changes after a "git reset

下一篇: Understanding `git reset