我将给你一个简化的版本,告诉我现在发生了什么。我尝试了不同的解决方案,但我甚至不确定我的问题来自哪里。
我在我的分支B上做了一些修改,它是上游存储库的分支A的一个分支。然后我尝试拉请求合并A和B.
创建此PR时存在一些冲突,因此我尝试解决它们。但是,通过尝试这样做,我感谢git diff
部分文件显示所有行都被删除并重新添加:
@@ -977,16 +977,16 @@ p#splash-text span {
为了得到一个最小的例子,我中止了合并然后从上游A拉入一个新的分支C.
现在我在C上,如果我打开文件我遇到了问题而只是保存它而不修改我得到git diff
以下内容:
@@ -977,16 +977,16 @@ p#splash-text span {
.other div#carshare .box.active {
background-color: green;
-}
-
-.other div#bluephone .box.active {
- background-color: #2880ca;
-}
-
-.box_col {
- vertical-align: middle;
-}
-
+}^M
+^M
+.other div#bluephone .box.active {^M
+ background-color: #2880ca;^M
+}^M
+^M
+.box_col {^M
+ vertical-align: middle;^M
+}^M
+^M
.leaflet-control-locate a {
padding: 3px 0px 0px 0px;
}
我读了很多关于行结尾的内容,发现'^ M'是由windows放置的行结尾,但另一个贡献者在Linux下工作,所以我有点迷失为什么他最近的修改有'^ M '在我当地。
由于我在Linux上,我尝试了以下方法:
git config --global core.autocrlf input
我也尝试将其设置为true
,但它没有解决我的问题。
另一位撰稿人没有为autocrlf
设置任何内容,这可能是问题所在?
现在,如果我进行一些小修改但运行git diff --ignore-space-at-eol
,我会得到以下结果:
@@ -697,7 +697,7 @@ div#otp-planner-optionsWidget-scollPanel {
padding:10px;
}
-.otp-layerView-inner fieldset { border-top:1px solid #000; }
+.otp-layerView-inner fieldset { border-top:1px solid gray; }^M
.otp-layerView-inner fieldset legend { text-align:center; }
所以我想承诺并推动PR这个改变,但我不希望任何行结束也跟着。
有没有办法只提交这个单一的更改,而不是所有的行更改引入?
或者我怎么能没有这一切变化?
我阅读了git config的手册页,并阅读了有关空白区域的其他问题,但所提供的解决方案似乎不起作用或适用于我的案例。
如果你有关于如何解决这个问题的想法建议,以后再也没有,请告诉我。
答案 0 :(得分:2)
.gitattributes
文件可以帮助解决这种情况。要保持一致的unix行结尾,请使用:
* text eol=lf
我建议您实际检查.gitattributes
文件到您的仓库中,以便每个人都有一致的行结尾。
接下来,对您更改的文件运行dos2unix
实用程序以删除窗口行结尾:
dos2unix file.txt
最后,以交互方式将您的更改重新绑定到您尝试贡献的分支上,并强制推送更新您的提取请求:
git fetch
git rebase -i origin/A
git push -f origin C