我正在使用IDE,它在某些生成但強烈需要的庫文件中生成版本。所以,如果我想要使用多個版本的庫,或者看到一些實際上沒有意義的更改,則會出現問題。git filter not'unmodifying'文件
摘要:我想忽略單行的,我認爲Git的過濾器是正確的方法一個或多個文件。我可以爲grep
找到相關產品線,而不會出現任何問題,因爲人們可能會看到進一步的閱讀。
長話短說,我設置了一個git過濾器來恢復對頭文件中版本的任何修改。 (請注意,可能會有不同的修改將在本文件的相關)。
[filter "ignore-version"]
smudge = cat %f || cat
clean = git ls-files %f --error-unmatch >&- 2>&- \
&& sed \"/version/c $(git show HEAD:%f | grep version)\" || cat
(我加逃過線打破了更好的閱讀和改變,以配合簡單的字。在原來的版本有沒有衝突可能的。)
git ls-files
檢查該文件是否已經在存儲庫(目前HEAD)
1.1如果存在的話,sed
將做骯髒的工作,以取代已經整條生產線追蹤一個
1.2如果沒有,cat
會做什麼,但前進(這應確保沒有被跟蹤的文件不會丟失)
所以很遠,它的工作。 (我可以用這一事實,過濾器默默地將所有CRLF到LF住...)
問題:通過git的改性固定文件被標記,儘管最新的版本庫文件並且過濾的版本是二進制相等的。我使用kdiff作爲單獨的工具進行了檢查。
編輯1:下面是一些輸出其示出了兩個文件版本的等式:
$ git show HEAD:file.txt | md5sum
9f95c28cebe4f45b8efb7b0ae64dfa56
$ cat file.txt | md5sum
894e7d1b28180b7a193bf3cdd6ceaacb
$ cat file.txt | git ls-files file.txt --error-unmatch >&- 2>&- \
&& sed \"/version/c $(git show HEAD:file.txt | grep version)\"
|| cat | md5sum
9f95c28cebe4f45b8efb7b0ae64dfa56
編輯2:此外,差的輸出.. 。
$ git diff file.txt
warning: LF will be replaced by CRLF in file.txt.
The file will have its original line endings in your working directory.
請注意該文件的簽入版本只包含LF,與之前的提交一樣。另請注意,core.autocrlf
的設置爲true除.gitattributes
文件中的篩選器規範外沒有任何內容。
我在一臺Linux機器上使用一個存儲庫從頭開始重現了這一點......並且它工作正常。同樣的命令呢!因此,在Windows機器上使用git和斷行顯然存在問題。我嘗試了所有的git配置,但都沒有工作。 – maxik
https://stackoverflow.com/questions/17628305/windows-git-warning-lf-will-be-replaced-by-crlf-is-that-warning-tail-backwar – Gimby
@Gimby我應該一直遵循這個警告,你是對的,雖然鏈接背後的解釋不是解決方案。不管怎麼說,還是要謝謝你。 – maxik