我正在开发一个名为'master'的分支。有人从原点删除了它,现在我处于一个奇怪的状态,我无法提交我的更改。我想将它们提交到新的“稳定”分支。
我尝试了关于stackoverflow的一些说明,现在我真的搞砸了。
$ git log --oneline --decorate --graph --all -10
* 4b2b148 (HEAD, origin/stable, stable) move from master branch
| * 1be25fe (origin/master, origin/HEAD, next, master) require pcre to prevent regular expression weirdness
1be25fe是我想申请稳定的提交。 4b2b148是我犯了一些奇怪的东西。如何将1be25fe置于稳定状态并完全删除4b2b148?
答案 0 :(得分:1)
要恢复到1be25fe,您需要运行以下命令,将HEAD移回1be25fe。然后,您可以通过执行推送来推动上游。
git reset --hard 1be25fe # revert back to 1be25fe
git status #to check to see that it has reverted correctly, and see if there are any other issues.
git push origin stable #push the changes and recreated the branch upstream
//编辑
为了解决您的“提示”错误,您可以将-f
参数添加到推送中。此参数强制更改远程存储库。我之前遇到过同样的问题而且效果很好。
git push -f origin stable
//编辑2
如果您想要实际删除提交,则需要查看变基:http://git-scm.com/book/en/Git-Branching-Rebasing
//编辑3
要将更改与4b2b148合并,您需要执行以下操作:
git checkout -b important_changes origin/stable # branch off from the current state
git cherry-pick 4b2b148 # retrieve the commit containing the changes and insert it ahead of 1be25fe
git checkout stable # switch back to the older branch
git merge important_changes # merge in the important changes
git commit -am 'merged important changes' # commit the changes
git push origin stable # push the branch to master
git branch -d important_changes # remove the temp branch.
警告:合并important_changes
和stable
时,可能会遇到一些合并问题。在推动之前确保它们已被固定。