Câu trả lời:
Cung cấp một đường dẫn (myfolder trong trường hợp này) và chỉ cần chạy:
git diff myfolder/
git diff -- myfolder
để giảm thiểu sự mơ hồ đối với git. Ký hiệu chung cho git diff (và nhiều lệnh git) là git diff [commit-ish] -- [path]
nơi cam kết mặc định là CHÍNH (hiện tại bạn đang ở đâu) và [path]
mặc định cho thư mục gốc git, nhưng có thể là bất cứ điều gì liên quan đến thư mục hiện tại của bạn. Nếu không có --
, git sẽ đoán ý của bạn, [commit-ish]
hoặc [path]
. Trong một số trường hợp, điều này khiến git nói ký hiệu là 'mơ hồ'. Nếu tôi nhớ chính xác.
git diff master..develop myfolder/
như @CrandellWS đã nói trong nhận xét về câu hỏi ban đầu. Trạng thái Git sẽ hiển thị cho bạn các thay đổi nếu đó là những gì bạn đang tìm kiếm.
Nếu bạn đang so sánh các nhánh khác nhau, bạn cần sử dụng --
để tách bản sửa đổi Git khỏi đường dẫn hệ thống tệp. Ví dụ: với hai chi nhánh địa phương master
và bryan-working
:
$ git diff master -- AFolderOfCode/ bryan-working -- AFolderOfCode/
Hoặc từ một chi nhánh địa phương đến một điều khiển từ xa:
$ git diff master -- AFolderOfCode/ origin/master -- AFolderOfCode/
Bạn nên tạo thói quen xem tài liệu cho những thứ như thế này. Nó rất hữu ích và sẽ cải thiện kỹ năng của bạn rất nhanh. Đây là bit có liên quan khi bạn làmgit help diff
git diff [options] [--no-index] [--] <path> <path>
Hai <path>
s là những gì bạn cần thay đổi để thư mục trong câu hỏi.
Thêm Beyond So sánh dưới dạng differftool của bạn trong Git và thêm bí danh cho diffdir là:
git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"
Nhận gitdiff như:
git diffdir 4bc7ba80edf6 7f566710c7
Tham khảo: So sánh toàn bộ thư mục w git Difftool + Beyond So sánh
git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"
thay thế
--no-symlinks
tùy chọn để lệnh đọcgit difftool --dir-diff --no-symlinks
Không chỉ bạn có thể thêm một đường dẫn, mà bạn có thể thêm git diff --relative
để có kết quả liên quan đến thư mục đó.
git -C a/folder diff --relative
Và với Git 2.28 (quý 3 năm 2020), các lệnh trong diff
gia đình "" đã học cách tôn vinh diff.relative
biến cấu hình "".
Xem cam kết c28ded8 (ngày 22 tháng 5 năm 2020) của Laurent Arnoud ( spk
) .
(Được hợp nhất bởi Junio C Hamano - gitster
- trong cam kết e34df9a , ngày 02 tháng 6 năm 2020)
diff
: thêm tùy chọn cấu hìnhrelative
Đã ký: Laurent Arnoud
Acked-by: Đoàn Trần Công DanhCác
diff.relative
tùy chọn thiết lập boolean đểtrue
chương trình chỉ thay đổi trong thư mục / giá trị hiện theo quy định củapath
đối số của cácrelative
tùy chọn và hiển thị tên đường dẫn tương đối so với thư mục nói trên.Dạy
--no-relative
ghi đè sớm hơn--relative
Thêm cho tài liệu tùy chọn git-format-patch (1)
--relative
và--no-relative
Các tài liệu hiện bao gồm :
diff.relative
:Nếu được đặt thành '
true
', 'git diff
' sẽ không hiển thị các thay đổi bên ngoài thư mục và hiển thị tên đường dẫn liên quan đến thư mục hiện tại.
Nếu bạn muốn loại trừ các thư mục con, bạn có thể sử dụng
git diff <ref1>..<ref2> -- $(git diff <ref1>..<ref2> --name-only | grep -v /)
Để sử dụng Beyond So sánh dưới dạng Difftool cho thư mục diff, hãy nhớ bật theo các liên kết tượng trưng như vậy:
Trong thư mục So sánh chế độ xem → Quy tắc (Biểu tượng trọng tài):
Và sau đó, kích hoạt theo các liên kết tượng trưng và cập nhật mặc định phiên:
HOẶC LÀ,
thiết lập bí danh như vậy:
git config --global alias.diffdir "difftool --dir-diff --tool=bc3 --no-prompt --no-symlinks"
Lưu ý rằng trong cả hai trường hợp, mọi chỉnh sửa được thực hiện ở bên (trái hoặc phải) liên quan đến cây làm việc hiện tại đều được giữ nguyên.
git diff master..yourbranch path/to/folder