将最新的提交拆分成多个分支
Split up latest commits into multiple branches
我知道有几个关于这个主题的问题,但我没有找到任何解决这种情况的问题。诀窍是我需要从其他两个提交中拉出一个提交。
我的回购看起来像这样:
A - B - C <- master
\
D <- devel
我希望它看起来像这样:
C <- feature1
/
A
\
B - D <- feature2
我知道我可能会用 rebase
来做这个,但是在使用 Git 一年之后,我仍然不清楚所有的行话。
更新:使用提交哈希而不是基本分支。
是的,我会变基。我知道通过 "rebase onto" 有一种更快的方法可以做到这一点,但我总是对如何恰到好处感到困惑。我会做的是用所有东西创建新的分支,然后删除你不想要的。
基础提交
您首先需要的是提交 A 的提交哈希。您将在接下来的步骤中将其用于 git rebase
。
## Copy the 6-char hex value next to commit "A"
git log --oneline
feature1
git checkout -b feature1 master
# insert the commit hash for commit A
git rebase -i $A
# in the VI editor, delete the line representing commit B, and save
feature2
git checkout -b feature2 devel
# insert the commit hash for commit A
git rebase -i $A
# in the VI editor, delete the line representing commit C, and save
git rebase
上的 -i
标志指示执行 "interactive rebase"。这就是为您提供编辑器的原因。阅读内置说明,了解您将来可以根据需要做什么。除了根据上游的更新重新设置本地提交之外,我几乎每天都使用它来重命名提交并将提交合并为一个,然后再将我的更改推送回上游。这是一个非常强大的理解工具,实际上并不那么复杂。
我知道有几个关于这个主题的问题,但我没有找到任何解决这种情况的问题。诀窍是我需要从其他两个提交中拉出一个提交。
我的回购看起来像这样:
A - B - C <- master
\
D <- devel
我希望它看起来像这样:
C <- feature1
/
A
\
B - D <- feature2
我知道我可能会用 rebase
来做这个,但是在使用 Git 一年之后,我仍然不清楚所有的行话。
更新:使用提交哈希而不是基本分支。
是的,我会变基。我知道通过 "rebase onto" 有一种更快的方法可以做到这一点,但我总是对如何恰到好处感到困惑。我会做的是用所有东西创建新的分支,然后删除你不想要的。
基础提交
您首先需要的是提交 A 的提交哈希。您将在接下来的步骤中将其用于 git rebase
。
## Copy the 6-char hex value next to commit "A"
git log --oneline
feature1
git checkout -b feature1 master
# insert the commit hash for commit A
git rebase -i $A
# in the VI editor, delete the line representing commit B, and save
feature2
git checkout -b feature2 devel
# insert the commit hash for commit A
git rebase -i $A
# in the VI editor, delete the line representing commit C, and save
git rebase
上的 -i
标志指示执行 "interactive rebase"。这就是为您提供编辑器的原因。阅读内置说明,了解您将来可以根据需要做什么。除了根据上游的更新重新设置本地提交之外,我几乎每天都使用它来重命名提交并将提交合并为一个,然后再将我的更改推送回上游。这是一个非常强大的理解工具,实际上并不那么复杂。