簡體   English   中英

在git中的任何方式,添加只有空格更改的所有文件到分段?

[英]Any way in git, to add all files with only whitespace changes to staging?

來自我們使用的庫的更新,其中包括在文件末尾清理/標准化換行。 正如我認為這種變化完全安全的變化,我想能夠自動說,有一個差異就像任何文件,

diff --git a/ExampleFile.cs b/ExampleFile.cs
index abcdef..abcd 100755
--- a/ExampleFile.cs
+++ b/ExampleFile.cs
@@ -88,4 +88,4 @@ namespace com.sixminute
         }

     }
-}
\ No newline at end of file
+}

直接進入暫存,所以我只需要處理/審查已更改的“真實”文件? 基本上,任何文件,如果我運行git diff -w ExampleFile.cs並返回一個空字符串應該添加。

我已經找到了一種使用git自動執行此操作的方法,但我看不到任何直接的方法可以執行此操作。 我的解決方案是編寫一個python幫助器腳本(下面的git只是我的shell中git二進制文件的sh.Command包裝器),

for fname in git.diff('--name-only', '--full-index', 'HEAD').splitlines():
    if '' == git.diff('-w', fname):
        print 'adding', fname
        git.add(fname)

但對於這樣的事情,我有點自然地認為git會內置一些東西,但如果是,我在文檔中找不到它的細節。

男人git-diff說:

-忽略空白線

忽略其行全部為空的更改。

嘗試這樣的事情:

for fname in $(git diff --name-only --full-index HEAD)
do
   diff=$(git diff -w --ignore-blank-lines)
   [ -z "$diff" ] && git add $fname
done

使用Python和Python sh庫( https://github.com/amoffat/sh )提交我自己的答案,

import sh

git = sh.git.bake('--no-pager', _cwd='/Developer/repos/git/example')

for fname in git.diff('--name-only', '--full-index', 'HEAD').splitlines():
    diff = git.diff('-w', fname)
    print diff
    if '' == diff:
        print 'adding', fname
        git.add(fname)

暫無
暫無

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

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