如何从已有的提交创建一个新的分支?

时间:2016-08-22 12:12:12

标签: git git-branch git-commit

我有包含三个提交的分支。现在我想创建这三个提交的三个新分支,每个提交应该是单独的分支,我该如何实现呢?

4 个答案:

答案 0 :(得分:1)

关于git branches

阅读问题和评论(来自OP),我相信在git中存在关于 分支的混淆。分支只是一个指向提交的小粘滞便笺。分支在git中不是一个“重”对象,所以你并没有真正“用这些提交创建新的分支”,也没有理由说“每个提交应该是一个不同的分支”;你只需标记一个提交“mybranch1”,另一个提交“mybranch2”等等。这些命令由@TimBiegeleisen(git branch <name> <commit>)提供。

阅读关于git如何构建其数据的一些初级读物可能有所帮助。 http://gitready.com/beginner/2009/02/17/how-git-stores-your-data.html

答案 1 :(得分:0)

我假设您需要三个独立的分支,每个分支都从原始分支中获取一个提交。

您可以通过创建orphan branches,然后cherry-picking提交来完成此操作。

例如:

git checkout --orphan branch1
git reset --hard
git cherry-pick <hash-of-commit-1>

以及其他两个提交。

答案 2 :(得分:0)

您希望以下列方式使用git branch

git branch branch_name <sha1-of-commit>

因此,您需要使用以下三个提交中的三个分支:

git branch branch1 <commit #1>
git branch branch2 <commit #2>
git branch branch3 <commit #3>

要查找三次提交的SHA-1哈希,可以在相关分支上键入git log。检查日志,直到找到要从中分支的三个提交。

答案 3 :(得分:0)

从原始提交创建新分支,然后cherry-pick您想要的提交:

# From the master branch
git branch branch-1 HEAD~2

git checkout -b branch-2 master~3
git cherry-pick master~1

git checkout -b branch-3 master~3
git cherry-pick master