2011-07-31 31 views
5

我是git的新用户,无法弄清楚如何解决这个问题。我对SVN有过一些经验,并且正在进行SVN行为。为什么我总是要手动合并git pull?

任何时候我从远程存储库中提取文件,并且我修改的文件也是远程修改的,它需要合并。我可以理解复杂变化的合并冲突,但是我发现合并冲突很小(例如,不同函数中的一行更改)。据我所知,SVN可以自动合并大部分内容,并且只有在自动合并失败时才会使文件处于冲突状态。

对于git,它似乎每次都在发生,并强制打开git merge工具。有没有办法自动合并文件?我是否缺少一些基本上将存储库置于冲突设置的设置?

+0

还在吗?你可以评论答案,说出他们是否适用,并回答包含的问题。 (如果答案解决了您的问题,请通过单击复选标记图标接受它。) –

回答

8

这是一个常见的原因是不同的行结束。您是否与其他人使用不同的操作系统共享回购? SVN做了一些线路结尾的清理工作。另一方面,Git默认情况下按字节存储文件。这意味着,当Windows用户使用\ r \ n行尾保存文件并且Linux用户使用\ n换行符保存该文件时,每行都会发生更改,并且如果发生其他更改,则会导致到处发生冲突。要更改处理行结束的方式,请使用配置设置“core.autocrlf”。在回购,其中不同的操作系统都在玩,我建议将其设置为“输入”为Linux用户和“真”为Windows用户:

git config [--global] core.autocrlf input 

git config [--global] core.autocrlf true 

其实,我想说只需在全球范围内随时使用这些设置。他们会为你节省一些心痛。请阅读git-config man page上关于core.autocrlf的更多信息,并注意如果您遇到此问题并且您使用现有存储库启用autocrlf,则可能会看到一些令人吃惊的行为,但可以解释它。

+0

+1对于读心,显然;-) – Peter

3

从手册:

https://book.git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging

git的承诺-a

此时两个分支有分歧,具有不同变化 在每个制成。要合并在实验中所做的更改到主, 运行

混帐合并实验

如果改变并不冲突,你就大功告成了。如果存在冲突, 标记将留在显示冲突的有问题的文件中;

git diff

会显示出来。一旦你编辑文件解决冲突,

git的承诺-a

将提交合并的结果。最后,

gitk

将显示结果历史的一个很好的图形表示。

问:您使用的是什么Git客户端? Git命令行工具?或者是其他东西?

问:另外,有问题的文件是Linux还是Windows?或者他们来自不同的环境?

+0

对于精心挑选的链接+1,简洁+相关摘录 – Peter

相关问题