如何用 Git 将一个分支一分为二?
How to split a branch in two with Git?
我从 master
创建了一个 feature
分支,然后在某个时候意识到从这个分支开始一个新分支会更好。
那么,如何在特定提交时将一个分支一分为二?
让我用这个小模式来解释一下:
我有这个:
master ───●──●──●──●──●──●──●──●──●──●
\
\
feature ●──●──●──●──●──●──●
▲
│
split here
我希望这样:
master ───●──●──●──●──●──●──●──●──●──●
\
\
feature ●──●──●──●
\
\
feature-test ●──●──●
您可以在您的 feature
分支中检查您希望新的 feature-test
分支开始的确切提交。然后从该提交创建一个名为 feature-test
的新分支:
git checkout <sha1 in feature>
git checkout -b feature-test
要在 feature
分支中获取所需提交的 SHA-1 哈希,您可以使用 git log
并找到所需的提交。该条目将如下所示:
commit 408d94384216f890ff7a0c3528e8bed1e0b01621
Author: Yadomi <yadomi@somewhere.com>
Date: Tue Mar 11 18:10:52 2015 -0700
如果你想用一个 Git 命令完成同样的事情,你也可以尝试以下方法:
git checkout -b feature-test 408d94384216f890ff7a0c3528e8bed1e0b01621
在这里,我使用了示例 Git 日志中的 SHA-1,但您可以将其替换为您需要的任何内容。
第一步是创建 feature_test
其中 feature
是:
git checkout feature
git checkout -b feature-test
但是你还需要将feature
重置为<sha1 split here>
:
git checkout feature
git reset --hard <sha1 split here>
请注意,如果您已推送 feature
,则需要执行 git push --force
。
对于可能已经从 origin/feature
.
撤出的其他合作者来说,这可能会带来不便
另一个未提及的选项(现在为时已晚但下次)不要一次提交所有更改并使用 hunks。
您可以通过在添加命令中使用 -p
标志来完成。 git add -p
然后只添加你需要的,创建第二个分支并提交其余部分。
澄清一下:git 添加 -p 让您选择要添加哪些更改以提交,而不选择特定的提交。
如果您需要选择不在单个范围内的提交,那么您可以使用 git cherry-pick
来选择特定的提交。
我从 master
创建了一个 feature
分支,然后在某个时候意识到从这个分支开始一个新分支会更好。
那么,如何在特定提交时将一个分支一分为二?
让我用这个小模式来解释一下:
我有这个:
master ───●──●──●──●──●──●──●──●──●──●
\
\
feature ●──●──●──●──●──●──●
▲
│
split here
我希望这样:
master ───●──●──●──●──●──●──●──●──●──●
\
\
feature ●──●──●──●
\
\
feature-test ●──●──●
您可以在您的 feature
分支中检查您希望新的 feature-test
分支开始的确切提交。然后从该提交创建一个名为 feature-test
的新分支:
git checkout <sha1 in feature>
git checkout -b feature-test
要在 feature
分支中获取所需提交的 SHA-1 哈希,您可以使用 git log
并找到所需的提交。该条目将如下所示:
commit 408d94384216f890ff7a0c3528e8bed1e0b01621
Author: Yadomi <yadomi@somewhere.com>
Date: Tue Mar 11 18:10:52 2015 -0700
如果你想用一个 Git 命令完成同样的事情,你也可以尝试以下方法:
git checkout -b feature-test 408d94384216f890ff7a0c3528e8bed1e0b01621
在这里,我使用了示例 Git 日志中的 SHA-1,但您可以将其替换为您需要的任何内容。
第一步是创建 feature_test
其中 feature
是:
git checkout feature
git checkout -b feature-test
但是你还需要将feature
重置为<sha1 split here>
:
git checkout feature
git reset --hard <sha1 split here>
请注意,如果您已推送 feature
,则需要执行 git push --force
。
对于可能已经从 origin/feature
.
另一个未提及的选项(现在为时已晚但下次)不要一次提交所有更改并使用 hunks。
您可以通过在添加命令中使用 -p
标志来完成。 git add -p
然后只添加你需要的,创建第二个分支并提交其余部分。
澄清一下:git 添加 -p 让您选择要添加哪些更改以提交,而不选择特定的提交。
如果您需要选择不在单个范围内的提交,那么您可以使用 git cherry-pick
来选择特定的提交。