linux - Git 空格/行结尾

标签 linux git github whitespace line-endings

我将向您简要说明发生的事情以及我现在所处的位置。我尝试了不同的解决方案,但我什至不确定我的问题从何而来。

我对我的分支 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/

相关文章:

java - Git 可以在 checkout 时更改文件吗?

git - CMake 无法检测 Git 版本

git - 使用多个id_rsa文件(SSH-KEYGEN)在github上推送

github 桌面不允许同步到远程存储库 - 无法访问或存储库被删除或重命名

c - 为什么 sem_t 指针必须从 4 偏移量的倍数开始?

c - 如何从popen()函数中读取stdout并将其存储在C语言中的char数组中?

linux - 在终端中使用带有 curl 的 "if"语句?

python - 如何使用 Linux 将程序的输出重定向到 .txt 文件

windows - Egit 显示所有文件已更改

git - 如何 stash "pr"远程分支?