说我有一个git存储库,我一直在做master,我可以追溯创建一个分支.例如:
A - B - C - A1 - D - A2 - E.
我想让它看起来像这样:
A - A1 - A2
\ \
B - C - D - E
Run Code Online (Sandbox Code Playgroud)
具体的用例是当我在旧版本分支中挑选了一堆提交时,它需要进入多个旧版本,我不想重复所有这些修订的樱桃选择.
从本质上讲,它首先作为一个功能或主题分支是好的,但不是那样创建的.
all*_*tom 102
如果您希望修订版XXX之后的所有提交都发生在分支中,我发现这比其他提议的方法容易得多.
$ git branch fixes # copies master to new branch
$ git reset --hard XXX # resets master to XXX
Run Code Online (Sandbox Code Playgroud)
这在git的帮助页面中描述了reset
"撤消提交,使其成为主题分支".
Bom*_*mbe 19
当然可以.(使用Git,没有什么比你无论如何都做不了.:)
git checkout -b new-branch hash-of-A
git cherry-pick hash-of-A1
git cherry-pick hash-of-A2
Run Code Online (Sandbox Code Playgroud)
这将从提交开始创建一个新分支A
.然后再次返回相同的提交,创建另一个分支:
git checkout -b new-branch2 hash-of-A
git cherry-pick hash-of-B
git cherry-pick hash-of-C
git cherry-pick hash-of-D
git cherry-pick hash-of-E
git merge new-branch
Run Code Online (Sandbox Code Playgroud)
现在你只需要合并new-branch
并new-branch2
获得你想要的结构并删除你的旧分支.
当然Dustin所说的仍然存在:提交的哈希值会发生变化,所以如果你还没有发布你的更改,你应该这样做.
归档时间: |
|
查看次数: |
7746 次 |
最近记录: |