假设我们有这种拓扑结构:
X--X--X-- origin/master
\
\
\--X--X--X-- b1 (private - not to be shared)
\
\
\--X--X--X-- b2 (to be shared upstream)
我们只想分享b2而不是b1,所以我们可以这样做:
git rebase --onto origin/master b1 b2
git push origin b2
是否有可能在不使用rebase和更改本地历史记录的情况下实现相同的目标? (推b2 sans b1提交)
答案 0 :(得分:3)
不,那是不可能的。一些b1
提交在b2
的历史记录中,因此您必须重写历史记录才能删除它们。
答案 1 :(得分:2)
有助于不考虑单个文件,而是考虑整个提交对象。要进入b2,您需要第二行的一些提交对象。
A--B--C-- master
\
\--D--E--F-- b1
\
\--G--H--I-- b2
为了得到我的提交,你需要所有提交对象A,B,D,E,G,H,I。
因此,除非你从B改变G,否则你将无法排除D,E提交。