簡體   English   中英

Git空格/行結尾

[英]Git whitespace/line ending

我將給你一個簡化的版本,告訴我現在發生了什么。 我嘗試了不同的解決方案,但我甚至不確定我的問題來自哪里。

我在我的分支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的手冊頁,並閱讀了有關空格的其他問題,但所給出的解決方案似乎不起作用或適用於我的案例。

如果你有關於如何解決這個問題並且將來沒有它的想法建議請告訴我。

.gitattributes文件可以幫助解決這種情況。 要保持一致的unix行結尾,請使用:

* text eol=lf

我建議實際檢查.gitattributes文件到您的.gitattributes這樣每個人都有一致的行結束。

接下來,對您更改的文件運行dos2unix實用程序以dos2unix窗口行結尾:

dos2unix file.txt

最后,以交互方式將您的更改重新綁定到您嘗試貢獻的分支上,並強制推送更新您的pull-request:

git fetch
git rebase -i origin/A
git push -f origin C

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM