我有一些功能已添加到显示诊断信息的产品中。因为这些信息不应该在生产中显示,所以分支是在master之上的一些提交。
x <- xs
提交A-B-C-D-E (master)
\
F-G (local_testing)
和F
使本地测试变得更加容易。现在,要添加一项功能并确保其正常运行,我会根据G
检查一个新分支new_feature
。
local_testing
提交git checkout -b new_feature local_testing
# Do work
git commit -a -m "H"
会添加所需的功能。
H
我一直在交互式地重新定位以在提交A-B-C-D-E (master)
\
F-G (local_testing)
\
H (new_feature)
之前移动提交H
。然后我进行硬重置以将F
指向的提交对象移动到新的new_feature
。
H'
因此提交历史记录如下:
git rebase -i master
git reset --hard H
然后我快进A-B-C-D-E (master)
\
H' (new_feature)
\
F'-G' (local_testing)
到master
并删除new_feature
。
new_feature
这感觉有点笨重(特别是硬重置)。有没有更好的方法来实现这个流程?
答案 0 :(得分:1)
一种解决方案是使用git cherry-pick。您可以从分支主机直接应用提交H。
git cherry-pick <H>
如果您有多个新提交,则可以使用git rebase压缩它们。您还可以多次使用git cherry-pick
命令。