想要将我的主人更改为较旧的提交,我该如何做?

我想回滚到以前的提交,然后发布该代码,然后回到最新的提交。

也就是说,我的主人正在指向一个较旧的提交版本,所以我可以推出这个版本,然后我想回到最初的提交。

我怎样才能做到这一点?

如果你想做到这一点,并恢复到以前的提交:

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