问题: Bitbucket显示整个文件已经改变,即使我没有看到任何差异。并且这些文件中没有合并冲突。
详细信息: 我创建了一个sprint分支(名为“sprintbranch”),开发人员从sprint分支创建了一个功能分支(名为“featurebranchX”)。当功能实现时,我开始将功能分支合并到sprint分支。现在有两种情况我面临一个问题:
两次bitbucket都显示整个文件已经更改。并且没有合并冲突。
当发生这种情况时,我无法进行代码审查,因为我不知道开发人员修改了哪些特定行。此外,我在这一点上失去了历史 - 回顾过去,我无法弄清楚实施或合并到sprint分支中的内容。
我的猜测是问题在于行结尾。与CRLF有关。但是当我提交我的工作时,我确实看到自动使用了适当的行结尾(通过git或像SmartGit这样的工具)
如何解决这个问题,以免它继续发生?
更新
我刚刚发现我可以在拉取请求的url末尾附加一个查询字符串w=1
,以忽略cr lf差异。
但是这些文件仍然存在于提交中,当我将其合并回来时,它会包含这些差异吗?
答案 0 :(得分:8)
尽管Bitbucket可以忽略差异中的空白(使用w=1
查询参数),但这些更改仍将包含在合并中。
但您可以配置git将所有行结尾转换为LF或CRLF。您的团队应首先确定它将是哪个选项,然后相应地在text
文件中设置.gitattributes
属性,如下所示:
* text eol=lf
This Github help page显示更多信息。 (这些信息一般用于git,而不是Github。)
您还需要全局配置选项git config --global core.autocrlf input
(Mac& Linux)或git config --global core.autocrlf true
(Windows)。
# Make sure you won't loose your work in progress
$ git add . -u
$ git commit -m "Saving files before refreshing line endings"
# Remove every file from the git index
$ git rm --cached -r .
# Rewrite the git index
$ git reset --hard
# Prepare all changed files for commit
$ git add .
# It is perfectly safe to see a lot of messages here that read
# "warning: CRLF will be replaced by LF in file."
# And commit.
$ git commit -m "Normalize all the line endings"