Trong một dự án nơi một số tệp chứa ^ M làm dấu phân cách dòng mới. Việc khuếch tán các tệp này rõ ràng là không thể, vì git-diff thấy nó vì toàn bộ tệp chỉ là một dòng.
Làm thế nào để một khác với phiên bản trước?
Có một tùy chọn như "coi ^ M là dòng mới khi khác biệt" không?
prompt> git-diff "HEAD^" -- MyFile.as
diff --git a/myproject/MyFile.as b/myproject/MyFile.as
index be78321..a393ba3 100644
--- a/myproject/MyFile.cpp
+++ b/myproject/MyFile.cpp
@@ -1 +1 @@
-<U+FEFF>import flash.events.MouseEvent;^Mimport mx.controls.*;^Mimport mx.utils.Delegate
\ No newline at end of file
+<U+FEFF>import flash.events.MouseEvent;^Mimport mx.controls.*;^Mimport mx.utils.Delegate
\ No newline at end of file
prompt>
CẬP NHẬT:
bây giờ tôi đã viết một tập lệnh Ruby kiểm tra 10 bản sửa đổi mới nhất và chuyển đổi CR thành LF.
require 'fileutils'
if ARGV.size != 3
puts "a git-path must be provided"
puts "a filename must be provided"
puts "a result-dir must be provided"
puts "example:"
puts "ruby gitcrdiff.rb project/dir1/dir2/dir3/ SomeFile.cpp tmp_somefile"
exit(1)
end
gitpath = ARGV[0]
filename = ARGV[1]
resultdir = ARGV[2]
unless FileTest.exist?(".git")
puts "this command must be run in the same dir as where .git resides"
exit(1)
end
if FileTest.exist?(resultdir)
puts "the result dir must not exist"
exit(1)
end
FileUtils.mkdir(resultdir)
10.times do |i|
revision = "^" * i
cmd = "git show HEAD#{revision}:#{gitpath}#{filename} | tr '\\r' '\\n' > #{resultdir}/#{filename}_rev#{i}"
puts cmd
system cmd
end
git diff --ignore-cr-at-eol
. Xem câu trả lời của tôi dưới đây .
git diff -b
giống hệt git diff --ignore-space-change
.
git diff -b
- Tôi đã trình bày điều này trong stackoverflow.com/a/46265081/58794