我在Mac上看到带有git的奇怪行为。我没有在Windows上看到这种情况。在Mac上使用git v 2.19.1,在Windows上使用2.18.0.windows.1。
我在跨平台团队中工作,所以我们有些人使用Windows,其他人使用Mac。我都用。
这是我看到的情况:
我在我的功能分支上工作了几天,并希望确保使用最新的远程更新来更新我的分支,因此我始终使用最新版本的远程。因此,我每天都会做以下事情,以减少冲突的机会并保持最新版本:
git checkout开发
git获取来源
git merge起源/开发
git checkout我的功能
git merge开发
完成后,我将更改应用于我的功能分支,但我注意到git在Mac上的行为非常奇怪。这是发生了什么:
我添加了一些更改
我还没有上演任何事情,因此没有发布 git add
我执行 git status
,即使我既未修改也未暂存文件,我看到很多文件好像它们已被我修改并暂存。
例如,git status现在将我的.gitignore文件显示为:
me $ git状态
在分支我的功能
您的分支是最新的“来源/我的功能”。
所做更改:
新文件:.gitignore
在Windows上不会发生这种情况,并且由于我没有修改此文件,因此它根本不会显示为 git status
。我修改过的文件显示了需要添加的内容,这是它的行为方式。
为什么在Mac上,git会以某种方式修改和上载我从未触摸过的文件?
答案 0 :(得分:2)
在混合开发环境中(例如我也在其中工作),当“行尾”不匹配时,我会看到此行为。解决此问题的最佳方法是更新您的.gitconfig
文件。
我鼓励工作团队中的每个人都将以下内容添加到他们的.gitconfig
文件中。您可以像每个.gitconfig
一样向每个仓库添加一个.gitignore
,和/或每个开发人员都可以在其git全局配置文件中对其进行设置。
[text]
eof=lf
有不同的选择,但是关键是整个团队在提交和拉动时使用相同的行结尾。
根据下面的请求,这是我的gitconfig。
[User]
name = Ben Horgen
email = xxx@xxxxxxxx.com
[text]
eof=lf
[core]
autocrlf = input
[pull]
rebase = true
[push]
default = simple