想要将我的主人更改为较旧的提交,我该如何做?
我想回滚到以前的提交,然后发布该代码,然后回到最新的提交。
也就是说,我的主人正在指向一个较旧的提交版本,所以我可以推出这个版本,然后我想回到最初的提交。
我怎样才能做到这一点?
如果你想做到这一点,并恢复到以前的提交:
git checkout master~1 # Checkout previous commit on master git checkout -b new_master # Create branch for new master git branch -D master # Delete old master git branch -mv new_master master # Make new_master master
或者:
git reset --hard master~1 # Reset current branch to one commit ago on master
你的问题不清楚。 我想你所要求的是这样的:
git push -f origin $old_commit_id :master
这会做什么? 它会将$old_commit_id
提交作为origin
master
分支的新的头部。
如果这是你想要的,你根本就不需要触摸你的本地master
分支。
你可以只是git checkout <commit-id>
,做任何你需要做的事情,然后git checkout master
回到新的代码。
如果你真的需要修改旧的代码来释放它,那么你应该:
git checkout -b my_release <commit-id> ... prepare code for release ... ... release code ... git checkout master git merge my_release
另外,我不能推荐足够的gitstream量 。 这使得这一切都非常简单。
假设这样的提交图:
| (A) ---------> (B) ----------> (C) | ^ | (master)
您想要首先签出master
并创build一个指向当前master
的分支:
git checkout master git branch pointer master
现在应该是这样的:
| (A) ---------> (B) ----------> (C) | ^ | (HEAD, master, pointer)
现在你已经master
,我们将告诉master
分支向后移动一个提交:
git reset master~1
现在, master
应该被移回一个空格,但pointer
分支仍然在最近的提交:
| (A) ---------> (B) ----------> (C) | ^ ^ | (HEAD, master) (pointer)
在这一点上,你可以把master
推到遥远的地方,或者在任何地方,然后将其快速合并回到pointer
分支。 你可以在这个时候杀掉pointer
分支:
git push origin master git merge --ff-only pointer git branch -D pointer
最后 :
| (A) ---------> (B) ----------> (C) | ^ ^ | [ origin/master ] (HEAD, master)
使用git reset --hard <old commit number>
它会重置HEAD到这个旧的提交。
此外,您需要使用git push -f origin
来更改远程回购。
转到以前的版本:
git checkout <version hash>
在这里做你的工作,并承诺
git commit --amend
回到主人 :
git checkout master