这是我的情况,有一个GIT存储库,我正在为master工作,而其他人正在分支机构工作,比如说地铁,有以下历史记录(比如一个文件):
编辑:抱歉,格式化不是用户友好的,我已将其更新如下:
人A和B都在同一个文件上工作,A人正在使用 承诺: Time1A,Time2A和Time3A 变化: 分别增加了1,3,5个
B人正在分支地铁上工作: Time1B,Time2B和Time3B 变化: 分别增加了2,4,6个
当PersonB从地铁到主人合并时,提交历史将如下:
Time1A,Time1B,Time2A,Time2B,Time3A,Time3B
在我得到的文件中:1,2,3,4,5,6。
如果我需要在合并之前获得一个干净的主人,我可以查看Time3A的提交吗?它是否包括在Time3之前从地铁合并的东西?
由于
答案 0 :(得分:3)
在Git中进行合并只会增加历史记录。它不会修改过去 - 如果在合并后签出过去的提交,那么提交将与提交时完全一样。
顺便提一下,你的时间表并不是真的正确:这两个分支没有追溯混合。更好地描述提交历史将是:
master -> ... Time1A -- Time2A -- Time3A
\
>-- Merge
/
subway -> ... Time1B -- Time2B -- Time3B
在此历史记录中,标记为“Merge”的提交有两个父项(Time3A和Time3B)。
答案 1 :(得分:2)
一个更好的解决方案是让B改变他/她在A
上的工作(master) -> ... Time1A -- Time2A -- Time3A
\
>-- Time1B' -- Time2B' -- Time3B' (subway)
然后合并到掌握是一个快进的:
(master) -> ... Time1A -- Time2A -- Time3A -- Time1B' -- Time2B' -- Time3B' (master,subway)
请参阅" git rebase
vs git merge
"。