我经常犯。我希望将我的细粒度提交历史记录保存在我本地Git存储库的一个分支中,并将更粗粒度的提交推送到远程仓库中。
我希望能够在我的"细粒度"中找到相应的提交。当地分公司。
我该怎么做?
答案 0 :(得分:2)
为了让你的本地分支远离遥控器:
创建并签出本地分支(让我们称之为Ruby
分支)。根据需要提交所有细粒度的提交。
m1 - m2 <- master, origin/master \ r1 - r2 - r3 <- Ruby (fine grained commits - no origin/Ruby)
每当您要在Ruby
中完成要发送到遥控器的粗粒工作时,请将其合并到本地仓库中的相应分支,该分支也是遥控器上的分支。我们假设这个分支是master
,但它可能是dev
,release-xyz
,feature-123
等其他内容。)
m1 - m2 ------- m3 <- master (new merge m3 from Ruby) \ / r1 - r2 - r3 <- Ruby
要创建合并提交(上图中的m3),请检查要合并的分支(即master
等),并且不要将Ruby
分支重新定位到{ {1}},会将所有提交master
,r1
和r2
复制到r3
。相反,只需与提交进行正常合并(即master
)。在合并提交中,根据需要汇总提交消息中的更改组。
确保git merge Ruby
已签出,并推送到远程 - 或使用特定推送命令确保您推送master
,而不是master
。< / p>
Ruby
我们的想法是,我们只将m1 - m2 ------- m3 <- master (origin/master updated to m3 from push)
\ /
r1 - r2 - r3 <- Ruby (still no origin/Ruby - local only)
保留为本地分支,而不是将其推送到远程。当然,如果其他人有权访问那些细粒度的提交,那么推送Ruby
是没有害处的。此外,通过推送Ruby
,它将被保存为备份,以防您的PC出现故障,如果需要,您可以将其克隆到另一台PC,而您的设备不可用。因此,您可能想要考虑将Ruby
作为一个分支推送到远程 - 但即便如此,您可能仍希望合并一个提交,如上所述。