想要将我的主人更改为较旧的提交,我该如何做?
我想回滚到以前的提交,然后发布该代码,然后回到最新的提交。
也就是说,我的主人正在指向一个较旧的提交版本,所以我可以推出这个版本,然后我想回到最初的提交。
我怎样才能做到这一点?
如果你想做到这一点,并恢复到以前的提交:
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