Sen*_*mar 7 git sha1 git-merge git-branch
在ClearCase中,当在两个不同版本的目录中找到两个具有相同名称的文件时,会发生恶意孪生,并且如果元素OID不同但名称相同.
在GIT中,SHA1 id始终是唯一的,具有相同名称的文件始终具有不同的SHA1 id.
我们没有Evil双胞胎的概念,但是有可能有两个或更多开发人员在同一目录中创建具有相同文件名的不同内容的文件.在合并期间,当两个文件完全不同时,开发人员有可能单独保留其更改并留下其他更改导致代码丢失.
任何人都可以告诉我,如果GIT中存在类似于ClearCase的问题或正弦,每个SHA1 id都是唯一的,GIT中不会有任何邪恶的双胞胎问题.
Git会在整个树的级别进行跟踪,而不是单个文件和目录,因此它没有像OID这样的概念.
当合并包含对文件的不兼容更改的历史记录时(例如,两者都添加了具有不同内容的新文件),Git将产生合并冲突并停止让用户解决冲突或中止合并.
当然,Git不能强迫用户做合并做正确的事情,但也许更难以完全忽略冲突的一方.在Git中,冲突将在文件本身中,而不是在包含文件的目录中.换句话说,冲突将是关于文件的内容而不是应该将哪个OID链接到目录中.当然,根据使用的工具,用户可能仍然只是按下"在所有冲突中占据我的一面",但Git至少不会关心(尽管懒惰的老板和同事可能非常关心!).