我们在公司开始使用GIT而不是SVN,虽然我个人已经使用了一段时间,但我们遇到的问题是作为一个经常发生变化的团队工作。
我们决定使用GITFlow Workflow,我们使用Eclipse(w / EGit)来开发我们的软件。
每当有人提交并将其推送到远程存储库并进行后续拉取(或获取和合并)时,我会收到更改并遇到2个问题:
有人可以解释一下,向我指出一些可以澄清这些观点或我应该如何处理这些观点的信息吗?
由于
答案 0 :(得分:1)
Aleksandr M的消息澄清了很多事情:请参阅stackoverflow.com/q/8227233/1700321和stackoverflow.com/q/1510798/1700321。并使用命令行或SourceTree而不是egit。 ;) - Aleksandr M 31分钟前
我还警告你要两次验证你所推动的内容:
我们经常与文件发生合并冲突,当我们看到根本没有任何冲突时,即他们没有任何其他差异,除了Git复制和粘贴文件的内容再次在文件上方。
即使文件没有被修改,他的二进制文件也可以是,如果你按下这两个,那么就会有冲突,因为他们没有相同的哈希码SHA1。
(具有相同SHA1哈希码的两个对象是相同的,它用于标识文件,并且具有相同SHA1哈希码的两个对象永远不会重复)
答案 1 :(得分:0)
关于你的第一点,我刚才在这里回答了同样的问题:https://stackoverflow.com/a/29463230/209288
Pull应该执行获取和合并,这本身就是一个提交。因此,其他人的这些更改将应用于文件,暂存,然后自动提交。如果此自动合并提交出现问题(例如冲突),那么您将在解决冲突时看到其他人员的更改已暂停。
对于第二点 - 我也看过"假的"冲突也是多年之后还没有得出一些结论!
有时是空白:例如正在转换的标签/空格或换行符。大多数Git GUI都有一个"隐藏空白"差异窗格中的选项以及用于解决冲突的合并工具也是如此。因此,有时Git认为冲突由外部合并工具更优雅地处理,因为您已放宽其配置中的空白规则。当你关闭ignore-whitespace选项时,有时看起来没有变化的是空格的变化。
我唯一得出的结论是因为外部合并工具在合并时可能比Git本身更好 - 或者至少遵循稍微不同的算法。因此,当git向外部工具发出冲突时,它可能能够解决它并且不会显示冲突!
"除了Git在文件上方复制并粘贴文件内容之外,他们之间没有任何差异。"
我不确定我是否完全理解,如果你说文件内容本身是重复的,那么你可能会看到冲突差异格式。如果行结尾不同,这将复制整个文件。
如果你看到这个:
<<<<<<< HEAD
...entire file contents...
=======
...entire file contents...
>>>>>>> otherbranch
然后,我几乎可以保证你的行结束已经改变。