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 mastervà 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-symlinkstù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 diffgia đình "" đã học cách tôn vinh diff.relativebiế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.relativetùy chọn thiết lập boolean đểtruechương trình chỉ thay đổi trong thư mục / giá trị hiện theo quy định củapathđối số của cácrelativetù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-relativeghi đè sớm hơn--relativeThêm cho tài liệu tùy chọn git-format-patch (1)
--relativevà--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