Git如何基于现有分支的指定提交范围创建新分支
如何基于指定提交范围创建新分支?
嘿,这事儿好办!我来给你讲两种靠谱的方法,帮你从现有分支里把commit38到commit40这几个提交拎出来建个新分支:
方法一:用git cherry-pick精准提取提交
这种方法逻辑直白,适合明确指定提交范围的场景:
- 先找到commit38的父提交(也就是commit37),如果不知道它的哈希,敲
git log --oneline就能看到所有提交的简短标识。然后基于这个父提交创建一个空的新分支:
要是commit40是当前分支的最新提交,也可以用相对引用代替commit37的哈希,比如git checkout -b new-branch commit37HEAD~3(从commit40往前数3个就是commit37),命令改成:git checkout -b new-branch HEAD~3 - 接着把commit38到commit40这三个提交“复制”到新分支上:
这里的git cherry-pick commit37..commit40commit37..commit40刚好包含commit38、39、40所有提交(Git的范围语法里,A..B指的是所有能从B到达但不能从A到达的提交,完美匹配我们的需求)。
方法二:先建分支再裁剪多余提交
如果commit38到40是原分支最末尾的三个提交,这个方法更快捷:
- 直接基于原分支的最新提交(commit40)创建新分支:
git checkout -b new-branch # 要是你不在原分支上,就加上分支名比如git checkout -b new-branch main - 用交互式变基把commit38之前的提交全部移除:
执行命令后会弹出一个文本编辑器,里面只显示commit37之后的提交(也就是我们要的commit38、39、40)。你只需要保留这三行记录(如果有其他多余提交,把前面的git rebase -i commit37pick改成drop或者直接删掉那行),保存退出后,新分支就只包含目标提交了。
小提示
要是记不清提交哈希,随时用git log --oneline查看,它会输出每个提交的简短哈希和提交信息,找起来超方便!
内容的提问来源于stack exchange,提问作者pmiranda
相关产品推荐
相关产品推荐

