将提交从 master 移动到独立分支
Move a commit to independent branch from master
我分错了分支,我想将提交移至主分支而不是功能分支。尝试使用 feat2 的 rebase master 但我得到 "Current branch ... is up to date"
基本上我想从这里开始
feat2 F
/
feat1 C - D - E
/
master A - B
对此
feat1 C - D - E
/
master A - B
\
feat2 F
当然F不依赖于C-D-E中的任何一个
编辑:强制变基显示不仅在 feat2 上考虑了 F,而且来自 master 的所有提交都变基了 (C-D-E-F)。我需要的是一种在 feat1.
处告诉 "cut" 变基的方法
尝试使用 git rebase --onto
:
git checkout feat2
git rebase --onto E B
这表示要在提交 B
之上变基提交 F
,其父项是 E
。这让 feat2
看起来如你所愿,F
提交直接位于 B
.
之上
另一种简单的处理方法是从 master
分支出一个新功能 2 分支 feat2new
,然后选择提交 F
。在此之后,您可以删除旧的 feat2
分支并将 feat2new
重命名为 feat2
:
git checkout master
git checkout -b feat2new
git cherry-pick <SHA-1 for commit F>
现在删除 feat2
,并重命名:
git branch -d feat2
git branch -m feat2new feat2
我分错了分支,我想将提交移至主分支而不是功能分支。尝试使用 feat2 的 rebase master 但我得到 "Current branch ... is up to date"
基本上我想从这里开始
feat2 F
/
feat1 C - D - E
/
master A - B
对此
feat1 C - D - E
/
master A - B
\
feat2 F
当然F不依赖于C-D-E中的任何一个
编辑:强制变基显示不仅在 feat2 上考虑了 F,而且来自 master 的所有提交都变基了 (C-D-E-F)。我需要的是一种在 feat1.
处告诉 "cut" 变基的方法尝试使用 git rebase --onto
:
git checkout feat2
git rebase --onto E B
这表示要在提交 B
之上变基提交 F
,其父项是 E
。这让 feat2
看起来如你所愿,F
提交直接位于 B
.
另一种简单的处理方法是从 master
分支出一个新功能 2 分支 feat2new
,然后选择提交 F
。在此之后,您可以删除旧的 feat2
分支并将 feat2new
重命名为 feat2
:
git checkout master
git checkout -b feat2new
git cherry-pick <SHA-1 for commit F>
现在删除 feat2
,并重命名:
git branch -d feat2
git branch -m feat2new feat2