如何在“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