我想回滚到以前的提交,然后发布该代码,然后回到最新的提交。想要将我的主人更改为较旧的提交,我该如何做?
也就是说,我的主人正在指向一个较旧的提交版本,所以我可以调整该版本,然后我想返回到最初的一次提交。
我该怎么做?
我想回滚到以前的提交,然后发布该代码,然后回到最新的提交。想要将我的主人更改为较旧的提交,我该如何做?
也就是说,我的主人正在指向一个较旧的提交版本,所以我可以调整该版本,然后我想返回到最初的一次提交。
我该怎么做?
要移动到以前的版本:
git checkout <version hash>
做你的工作在这里,并与
git commit --amend
提交它要返回主:
git checkout 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
而且,我不能推荐git flow不够。它使这一切都变得非常简单。
你的问题不清楚。我认为你问的是:
git push -f origin $old_commit_id:master
是什么内容呢?它会将$old_commit_id
提交到origin
作为origin
的master
分支的新主管。
如果这是你想要的,你根本不需要触摸你当地的master
分支。
这对我造成了“主(非快进)”故障。 @jtdubs解决方案工作。 – 2013-01-30 19:49:50
如果要做到这一点,将主服务器恢复先前的承诺:
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
假设像这样的提交图表:
| (A) ---------> (B) ----------> (C)
| ^
| (master)
你要先结帐master
并创建一个分支,指向master
curre ntly是:
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 reset --hard`将他的主分支指向旧的提交,所以`git checkout master`什么也不做。 – jtdubs 2010-12-05 16:32:11
诚然,感谢您的纠正。 +1给你,也会删除我的回答,但我认为`commit --amend`步骤足够有用 – 2010-12-06 02:22:25
什么是'--amend`? – Shafizadeh 2016-12-31 18:54:39