我意识到我们的分支开发不是很稳定,并且还原了一些更改以便对它们进行调试。
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
从那时起,另一个人为dev添加了一些安全提交,我调试了staged_dev并添加了一些提交。如何从dev中撤消270329c
并将staged_dev的其他提交添加到dev?
参考stackoverflow问题:Revert to a commit by a SHA hash in Git?
答案 0 :(得分:1)
git reflog
应该显示事物的位置,以便您可以从中创建old_dev分支。
答案 1 :(得分:0)
您最简单的选择可能就是:
git checkout dev
git merge staged_dev
git push origin dev
如果您对结果历史不满意,可以先将修改后的更改修改为“开发”分支的提示:
git checkout staged_dev
git rebase dev
git checkout dev
git merge staged_dev
如果您希望修改后的“staged_dev”提交在历史记录中与原始230086提交中的相同的位置,那么您将不得不变得更加漂亮,并且如果不删除已在“origin”中发布的“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”的本地结帐可能不再是上游历史记录。