我将向您简要说明发生的事情以及我现在所处的位置。我尝试了不同的解决方案,但我什至不确定我的问题从何而来。
我对我的分支 B 做了一些修改,它是上游存储库分支 A 的一个分支。然后我尝试通过 Pull Request merge A 和 B。
创建此 PR 时出现了一些冲突,因此我尝试解决它们。然而,通过尝试这样做,我意识到感谢 git diff
某些文件显示为所有行已删除并重新添加:
@@ -977,16 +977,16 @@ p#splash-text span {
举一个最小的例子,我中止了 merge ,然后从上游 A pull 入一个新的分支 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 输入
我也尝试将其设置为 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 的手册页并阅读了有关空白的其他问题,但给出的解决方案似乎不起作用或不适用于我的情况。
如果您对如何解决此问题有想法建议并且将来不会再有它,请告诉我。
最佳答案
.gitattributes
文件可以帮助解决这种情况。要保持一致的 unix 行结尾,请使用:
* text eol=lf
我建议实际将 .gitattributes
文件检查到您的存储库中,以便每个人都有一致的行尾。
接下来,运行 dos2unix
您更改以删除 Windows 行结尾的文件上的实用程序:
dos2unix file.txt
最后,以交互方式将您的更改重新定位到您尝试贡献的分支,并强制推送以更新您的 pull 请求:
git fetch
git rebase -i origin/A
git push -f origin C
关于linux - Git 空格/行结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35486743/