gpt4 book ai didi

c# - 无法修复 git 上的行尾问题

转载 作者:太空狗 更新时间:2023-10-29 14:44:38 27 4
gpt4 key购买 nike

我和我的同事们一直在为这个问题而苦恼。它有很好的文档记录(页面末尾的一些链接),但到目前为止我还没有能够解决这个问题。我们使用 visual studio 2013 在 c# 中编写代码。

每当我们 merge 两个分支时,我们都会有大量的“更改”,其中一个文件被完全相同的文件替换。根据我在网上看到的内容,我几乎可以肯定这是由于行尾问题造成的。

以下answer是对我帮助最大的。我第一次按照这些步骤操作时,它只能找到一个要规范化的文件,即 .gitattributes 文件。但随后我首先用下面的文件替换了该文件,并找到了预期要规范化的文件。这一切都是在我本地的分支机构完成的。

# Set the default behaviour, in case people don't have core.autocrlf set.
* text=auto

# Explicitly declare the text files you want to always be normalised and converted
# to native line endings on checkout.
*.cs text
*.json text
*.html text
*.csproj text

# Declare files that will always have CRLF line endings on checkout.
*.sln text eol=crlf

# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
*.gif binary

我完成了接下来的步骤,在输入命令后我得到了预期的消息(如下):“git add -u”

留言:

warning: CRLF will be replaced by LF in (...)

但是,当我切换到 master 分支并从我的本地分支更新时,几个文件再次被替换。我尝试在master分支中创建相同的.gitattributes文件并再次按照步骤操作,但是在“git status”命令之后没有找到应该规范化的文件,并且 merge 总是像以前一样执行,替换了几个文件由相同的。

我做错了什么?

Stack overflow thread

Official github solution

最佳答案

问题是我没有将我的代码分支与 gitattributes 文件同步(推送)到存储库,我只是提交了它。因为我在本地工作,所以我觉得足够了。但事实并非如此, merge 得到的是以前版本的代码,没有 gitattributes 文件。这个问题非常天真,但由于我上面引用的可用文档没有帮助,我将在下面发布我自己的教程,这可能会避免 future 的 github 菜鸟犯同样的错误。我的教程主要基于这个 thread .

对于本教程,我们假设存在一个工作分支和一个主分支。这个想法是将 gitattributes 文件推送到工作分支,下载 master 分支的代码并使用工作分支更新该代码。

# Add the following content to a file on the root of the repository in the 
# working branch, and name it .gitattributes
----------------------------------------------------------------------------
# Set the default behaviour, in case people don't have core.autocrlf set.
* text=auto

# Explicitly declare the text files you want to always be normalised and converted
# to native line endings on checkout.
*.cs text
*.json text
*.html text
*.csproj text

# Declare files that will always have CRLF line endings on checkout.
*.sln text eol=crlf

# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
*.gif binary
----------------------------------------------------------------------------

# From the root of the repository in the working branch remove everything from the index
# (don't forget the '.')
git rm --cached -r .

# Re-add all the deleted files to the index
# (You should get lots of messages like:
# warning: CRLF will be replaced by LF in <file>.)
git diff --cached --name-only -z | xargs -0 git add

# Commit
git commit -m "Fixed the line ending issue"

# Sync the code

# Switch to the master branch

# Update (merge) from the working branch

关于c# - 无法修复 git 上的行尾问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35630952/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com