我克隆了存储库并做了一些提交:
git clone ...
git add
git commit
git add
git commit
git add
git commit
Run Code Online (Sandbox Code Playgroud)
现在我意识到将所有提交移动到另一个新分支会更好.最好的方法是什么?
kni*_*ttl 26
很容易,检查你的新分支,然后移动旧分支(让我们假设master并做出3次提交):
git checkout -b my_new_branch
git branch -f master HEAD~3
Run Code Online (Sandbox Code Playgroud)
knittl的答案有效,但还有其他方法可以做到这一点.
我假设您在master第一次克隆此存储库时,主分支将匹配您从中克隆的存储库中的主分支.这是origin/master.因为你的问题始于clone一个公平的假设.
因此,在主分支上提交后,您现在已经领先于origin/master分支机构.
你要做的第一件事是创建一个新的分支
git branch new_branch
Run Code Online (Sandbox Code Playgroud)
注意:此命令只创建一个新分支但不切换分支.所以master和new_branch现在都指向同一个commit,但你仍然在master分支.
接下来要做的是将当前分支(即master)设置为添加提交之前的状态.这与origin/master您发出此命令的状态相同
git reset --hard origin/master
Run Code Online (Sandbox Code Playgroud)
这会将当前分支设置为与之相同的状态origin/master.该--hard套指标和工作树到初始状态.还有其他标志,但它们不能在这里做你想做的事.(注意:如果您的工作树中有未提交的更改,则它们现在被丢弃.git stash在重置之前使用此情况.)
所以现在你在master哪个点上处于相同的状态origin/master,你需要做的就是切换到新的分支:
git checkout new_branch
Run Code Online (Sandbox Code Playgroud)
是的,这有点长(3个命令而不是2个),但你不必计算你需要返回多少次提交,即使你已经分支,合并和重新设置,这也会有效; 我会在Git中解释其他做事方式.
| 归档时间: |
|
| 查看次数: |
2680 次 |
| 最近记录: |