[英]Rebase a single Git commit
有没有办法将单个提交从一个分支变基到另一个分支?
我有这个分支结构:
-- -- -- -- -- (Master)
\
-- -- -- -- -- XX (Feature-branch)
我想要做的就是将Feature-branch
的最后一次提交 rebase 到 master 和回滚Feature-branch
一次提交。
-- -- -- -- -- XX (Master)
\
-- -- -- -- -- (Feature-branch)
我怎么做?
你可以挑选 XX 来掌握。
git checkout master
git cherry-pick <commit ID of XX>
并使用 git reset 从功能分支中删除最后一次提交。
git checkout Feature-branch
git reset --hard HEAD^
git rebase --onto master branch~1 branch
这表示“在 master 分支的顶端重新设置 last-before-branch 和分支(即 XX 提交)之间的提交范围”
此操作branch
提示在提交XX
上移动后,因此您想将其设置回来
git checkout branch
git reset --hard branch@{1}^
其中说“将分支提示重置为之前状态之前的提交”
所以樱桃采摘是一个更简单的解决方案......
其实做起来很简单。 解决方案是进行交互式变基并“删除”您不想包含在变基中的所有提交。
git rebase -i <target_branch>
其中target_branch
是你想要 rebase 的分支
然后你将编辑打开的文件并pick
你想要的提交并drop
(或简称为d
)所有你不想带来的提交。
@Charles 的回答是正确的。 无论如何,我最终使用了很多次,最重要的是在项目上重新设置特定配置
* a8f9182 (HEAD -> production) production configuration | * daa18b7 (pre) preproduction configuration |/ | * d365f5f (local) local configuration |/ * 27d2835 (dev) amazing new feature that will save the world * | 56d2467 (master) boring state of the art for project |/
我为它创建了一个新命令:
$ cat ~/bin/git-rebaseshot COMMIT=$1 DEST=${2:-HEAD} git rebase ${COMMIT}^ ${COMMIT} --onto $DEST
通常你想为该命令自动完成分支名称,所以添加它采购这个功能(添加到.bashrc 或.profile):
_git_rebaseshot () { __gitcomp_nl "$(__git_refs)" }
git autocomplete 会搜索它
你可以像这样使用这个命令:
# rebase config on prepro on actual HEAD
$ git rebaseshot prepro
# rebase config on local onto dev
$ git rebaseshot local dev
# rebase production config on master
$ git rebaseshot pro master
当你正确划分特征时,可能性是无穷无尽的。
* a8f9182 (HEAD -> postgres) BBDD config * a8f9182 (local) local config * a8f9182 (debug) log level config * a8f9182 (dev) new feature |
我想这就是被子人们喜欢做的事情。
无论如何,此命令将适用于您提供的任何 sha/ref:
$ git rebaseshot <Feature branch> master
$ git rebaseshot <commit of XX> master
有没有办法将一个分支的单个提交重新绑定到另一个分支?
我有这个分支结构:
-- -- -- -- -- (Master)
\
-- -- -- -- -- XX (Feature-branch)
我想要做的就是将Feature-branch
的最后一次提交重新设置为 master 并回滚Feature-branch
一次提交。
-- -- -- -- -- XX (Master)
\
-- -- -- -- -- (Feature-branch)
我怎么做?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.