Đây là lệnh git-diff-index có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình mô phỏng trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS
CHƯƠNG TRÌNH:
TÊN
git-diff-index - So sánh một cây với cây hoặc chỉ mục đang hoạt động
SYNOPSIS
git chỉ số khác [-m] [--được lưu trong bộ nhớ cache] [ ] [ ...]
MÔ TẢ
So sánh nội dung và chế độ của các đốm màu được tìm thấy trong một đối tượng cây với đối tượng tương ứng
các tệp được theo dõi trong cây làm việc hoặc với các đường dẫn tương ứng trong chỉ mục. Khi
có đối số, chỉ so sánh các đường dẫn khớp với các mẫu đó. Nếu không thì tất cả
các tập tin được theo dõi được so sánh.
LỰA CHỌN
-p, -u, --patch
Tạo bản vá (xem phần tạo bản vá).
-s, --no-patch
Ngăn chặn đầu ra khác biệt. Hữu ích cho các lệnh như git show hiển thị bản vá bằng cách
mặc định, hoặc để hủy tác dụng của --patch.
-U , --unified =
Tạo khác biệt với dòng ngữ cảnh thay vì ba dòng thông thường. Hàm ý -p.
--thô
Tạo sự khác biệt ở định dạng thô. Đây là mặc định.
--patch-với-thô
Từ đồng nghĩa với -p --raw.
--tối thiểu
Dành thêm thời gian để đảm bảo tạo ra sự khác biệt nhỏ nhất có thể.
--kiên nhẫn
Tạo một khác biệt bằng cách sử dụng thuật toán "khác biệt kiên nhẫn".
--biểu đồ
Tạo sự khác biệt bằng cách sử dụng thuật toán "biểu đồ khác biệt".
--diff-math = {kiên nhẫn | tối thiểu | biểu đồ | myers}
Chọn một thuật toán khác biệt. Các biến thể như sau:
mặc định, myers
Thuật toán khác biệt tham lam cơ bản. Hiện tại, đây là mặc định.
tối thiểu
Dành thêm thời gian để đảm bảo tạo ra sự khác biệt nhỏ nhất có thể.
kiên nhẫn
Sử dụng thuật toán "sự khác biệt về độ kiên nhẫn" khi tạo các bản vá lỗi.
biểu đồ
Thuật toán này mở rộng thuật toán kiên nhẫn để "hỗ trợ mức độ phổ biến thấp
các yếu tố ”.
Ví dụ: nếu bạn định cấu hình biến diff.algorithm thành giá trị không mặc định và
muốn sử dụng tùy chọn mặc định, thì bạn phải sử dụng tùy chọn --diff-math = default.
--stat [= [, [, ]]]
Tạo ra một điểm khác biệt. Theo mặc định, bao nhiêu dung lượng cần thiết sẽ được sử dụng cho
phần tên tệp và phần còn lại cho phần biểu đồ. Chiều rộng tối đa mặc định cho thiết bị đầu cuối
chiều rộng hoặc 80 cột nếu không được kết nối với thiết bị đầu cuối và có thể bị ghi đè bởi .
Chiều rộng của phần tên tệp có thể được giới hạn bằng cách đưa ra một chiều rộng khác
sau dấu phẩy. Chiều rộng của phần biểu đồ có thể được giới hạn bằng cách sử dụng
--stat-graph-width = (ảnh hưởng đến tất cả các lệnh tạo biểu đồ thống kê) hoặc bởi
thiết lập diff.statGraphWidth = (không ảnh hưởng đến git format-patch). Bằng cách đưa ra một
tham số thứ ba , bạn có thể giới hạn đầu ra ở mức đầu tiên dòng, theo sau
bởi ... nếu có nhiều hơn nữa.
Các tham số này cũng có thể được đặt riêng lẻ với --stat-width = ,
--stat-name-width = và --stat-count = .
--numstat
Tương tự như --stat, nhưng hiển thị số dòng được thêm vào và xóa bằng ký hiệu thập phân và
tên đường dẫn không có chữ viết tắt, để làm cho nó thân thiện hơn với máy. Đối với các tệp nhị phân,
xuất ra hai - thay vì nói 0 0.
--viết tắt
Chỉ xuất ra dòng cuối cùng của định dạng --stat chứa tổng số lần sửa đổi
các tệp, cũng như số dòng được thêm và xóa.
--dirstat [= ]
Đưa ra phân phối lượng thay đổi tương đối cho mỗi thư mục con. Các
hành vi của --dirstat có thể được tùy chỉnh bằng cách chuyển cho nó một danh sách được phân tách bằng dấu phẩy
thông số. Các giá trị mặc định được kiểm soát bởi biến cấu hình diff.dirstat
(xem git-config(1)). Các thông số sau có sẵn:
thay đổi
Tính toán số dirstat bằng cách đếm các dòng đã bị xóa khỏi
nguồn hoặc được thêm vào đích. Điều này bỏ qua số lượng mã thuần túy
chuyển động trong một tệp. Nói cách khác, việc sắp xếp lại các dòng trong tệp không
được tính nhiều như những thay đổi khác. Đây là hành vi mặc định khi không có tham số
được đưa ra.
dòng
Tính toán các số dirstat bằng cách thực hiện phân tích chênh lệch dựa trên dòng thông thường và
tổng số dòng đã loại bỏ / thêm vào. (Đối với các tệp nhị phân, hãy đếm các khối 64 byte
thay vào đó, vì các tệp nhị phân không có khái niệm tự nhiên về dòng). Đây là một hơn
- hành vi đầu tiên đắt hơn hành vi thay đổi, nhưng nó có tính
sắp xếp lại các dòng trong một tệp giống như các thay đổi khác. Kết quả đầu ra là
phù hợp với những gì bạn nhận được từ các tùy chọn chỉ số - * khác.
các tập tin
Tính toán số thứ tự bằng cách đếm số lượng tệp đã thay đổi. Từng thay đổi
số lượng tệp như nhau trong phân tích dirstat. Đây là giá rẻ nhất về mặt tính toán
Hành vi --dirstat, vì nó hoàn toàn không phải xem nội dung tệp.
tích lũy
Đếm các thay đổi trong thư mục con cho cả thư mục mẹ. Lưu ý rằng
khi sử dụng tích lũy, tổng số phần trăm được báo cáo có thể vượt quá 100%. Các
hành vi mặc định (không tích lũy) có thể được chỉ định với
tham số.
Một tham số số nguyên chỉ định phần trăm giới hạn (3% theo mặc định). Thư mục
đóng góp ít hơn tỷ lệ phần trăm thay đổi này không được hiển thị trong đầu ra.
Ví dụ: Phần sau sẽ đếm các tệp đã thay đổi, trong khi bỏ qua các thư mục có ít hơn
hơn 10% tổng số tệp đã thay đổi và tích lũy số lượng thư mục con
trong thư mục mẹ: --dirstat = tệp, 10, tích lũy.
--tóm lược
Đưa ra một bản tóm tắt cô đọng về thông tin tiêu đề mở rộng, chẳng hạn như tác phẩm, tên đổi
và thay đổi chế độ.
--patch-với-stat
Từ đồng nghĩa với -p --stat.
-z
Khi --raw, --numstat, --name-only hoặc --name-status đã được cung cấp, đừng nhầm lẫn
tên đường dẫn và sử dụng NUL làm dấu kết thúc trường đầu ra.
Nếu không có tùy chọn này, mỗi đầu ra tên đường dẫn sẽ có TAB, LF, dấu ngoặc kép và
các ký tự gạch chéo ngược được thay thế lần lượt bằng \ t, \ n, \ "và \\ và tên đường dẫn
sẽ được đặt trong dấu ngoặc kép nếu có bất kỳ sự thay thế nào trong số đó xảy ra.
- chỉ tên
Chỉ hiển thị tên của các tệp đã thay đổi.
--tên-trạng thái
Chỉ hiển thị tên và trạng thái của các tệp đã thay đổi. Xem mô tả của --diff-filter
tùy chọn về ý nghĩa của các ký tự trạng thái.
- mô-đun phụ [= ]
Chỉ định cách hiển thị sự khác biệt trong các mô-đun con. Khi --submodule hoặc --submodule = log
được đưa ra, đăng nhập định dạng được sử dụng. Định dạng này liệt kê các cam kết trong phạm vi như git-
mô đun con(1) tóm tắt không. Bỏ qua tùy chọn - mô-đun phụ hoặc chỉ định
--submodule = ngắn, sử dụng ngắn định dạng. Định dạng này chỉ hiển thị tên của
cam kết ở đầu và cuối phạm vi. Có thể được tinh chỉnh thông qua diff.submodule
biến cấu hình.
--color [= ]
Hiển thị khác biệt màu. --color (tức là không có =) giống như --color = luôn luôn.
có thể là một trong những luôn luôn, không bao giờ, hoặc tự động.
--không màu
Tắt khác biệt màu. Nó cũng giống như --color = never.
--word-diff [= ]
Hiển thị một khác biệt từ, sử dụng để phân tách các từ đã thay đổi. Theo mặc định, các từ là
được phân cách bằng khoảng trắng; xem --word-diff-regex bên dưới. Các mặc định là đồng bằng,
và phải là một trong số:
màu sắc
Đánh dấu các từ đã thay đổi chỉ bằng màu sắc. Hàm ý - màu sắc.
đồng bằng
Hiển thị các từ dưới dạng [-removed-] và {+ thêm +}. Không cố gắng thoát khỏi
dấu phân cách nếu chúng xuất hiện trong đầu vào, vì vậy đầu ra có thể không rõ ràng.
sứ
Sử dụng định dạng dựa trên dòng đặc biệt dành cho việc sử dụng tập lệnh.
Các lần chạy đã thêm / loại bỏ / không thay đổi được in ở định dạng khác biệt thống nhất thông thường,
bắt đầu bằng ký tự + / - / `` ở đầu dòng và kéo dài đến
Cuối con đường. Các dòng mới trong đầu vào được biểu thị bằng dấu ngã ~ trên một dòng
của riêng nó.
không ai
Vô hiệu hóa từ khác một lần nữa.
Lưu ý rằng mặc dù tên của chế độ đầu tiên, màu sắc được sử dụng để làm nổi bật các
ở tất cả các chế độ nếu được bật.
--word-diff-regex =
Sử dụng để quyết định một từ là gì, thay vì xem xét các từ không có khoảng trắng để
là một từ. Cũng ngụ ý --word-diff trừ khi nó đã được bật.
Mọi trận đấu không trùng lặp của được coi là một từ. Bất cứ điều gì giữa
những kết quả phù hợp này được coi là khoảng trắng và bị bỏ qua (!) cho mục đích tìm kiếm
sự khác biệt. Bạn có thể muốn nối | [^ [: space:]] vào biểu thức chính quy của mình để tạo
đảm bảo rằng nó khớp với tất cả các ký tự không có khoảng trắng. Trận đấu có chứa một dòng mới là
âm thầm bị cắt ngắn (!) ở dòng mới.
Ví dụ: --word-diff-regex =. sẽ coi mỗi ký tự là một từ và,
tương ứng, hiển thị sự khác biệt của từng nhân vật.
Regex cũng có thể được đặt thông qua trình điều khiển khác hoặc tùy chọn cấu hình, xem
gitattribut(1) hoặc git-config(1). Cung cấp cho nó ghi đè rõ ràng bất kỳ trình điều khiển khác hoặc
cài đặt cấu hình. Trình điều khiển khác biệt ghi đè cài đặt cấu hình.
--color-words [= ]
Tương đương với --word-diff = color plus (nếu regex được chỉ định)
--word-diff-regex = .
- không đổi tên
Tắt tính năng phát hiện đổi tên, ngay cả khi tệp cấu hình đặt mặc định để làm
như vậy.
--đánh dấu
Cảnh báo nếu các thay đổi gây ra lỗi khoảng trắng. Những gì được coi là lỗi khoảng trắng là
được kiểm soát bởi cấu hình core.whitespace. Theo mặc định, khoảng trắng ở cuối
(bao gồm các dòng chỉ chứa khoảng trắng) và một ký tự khoảng trắng
ngay sau đó là một ký tự tab bên trong thụt lề đầu tiên của dòng là
được coi là lỗi khoảng trắng. Thoát với trạng thái khác XNUMX nếu tìm thấy sự cố. Không
tương thích với --exit-code.
--ws-error-highlight =
Đánh dấu các lỗi khoảng trắng trên các dòng được chỉ định bởi trong màu được chỉ định bởi
color.diff.whitespace. là danh sách cũ, mới, ngữ cảnh được phân tách bằng dấu phẩy. Khi nào
tùy chọn này không được đưa ra, chỉ các lỗi khoảng trắng trong các dòng mới được đánh dấu. Ví dụ
--ws-error-highlight = mới, cũ đánh dấu các lỗi khoảng trắng trên cả xóa và thêm
các dòng. tất cả đều có thể được sử dụng như một cách viết tắt cho ngữ cảnh cũ, mới.
- chỉ mục đầy đủ
Thay vì một số ký tự đầu tiên, hãy hiển thị toàn bộ đốm màu trước và sau hình ảnh
tên đối tượng trên dòng "chỉ mục" khi tạo đầu ra định dạng bản vá.
--nhị phân
Ngoài --full-index, xuất ra một khác biệt nhị phân có thể được áp dụng với git-apply.
--abbrev [= ]
Thay vì hiển thị tên đối tượng thập lục phân 40 byte đầy đủ ở đầu ra định dạng thô khác
và các dòng tiêu đề cây khác, chỉ hiển thị một phần tiền tố. Điều này độc lập với
- tùy chọn chỉ mục đầy đủ ở trên, kiểm soát định dạng đầu ra của bản vá lỗi khác. Không mặc định
số chữ số có thể được chỉ định bằng --abbrev = .
-NS[ ] [/ ], --break-rewrites [= [ ] [/ ]]
Ngắt hoàn thành ghi lại các thay đổi thành các cặp xóa và tạo. Cái này phục vụ hai
mục đích:
Nó ảnh hưởng đến cách một thay đổi dẫn đến việc viết lại toàn bộ tệp chứ không phải là một chuỗi
xóa và chèn trộn lẫn với nhau với một vài dòng trùng khớp
về mặt văn bản dưới dạng ngữ cảnh, nhưng dưới dạng một lần xóa tất cả mọi thứ cũ, theo sau là
chèn một lần mọi thứ mới và số m kiểm soát khía cạnh này của B
tùy chọn (mặc định là 60%). -B / 70% chỉ định rằng ít hơn 30% so với ban đầu nên
vẫn ở trong kết quả để Git coi đó là một lần viết lại toàn bộ (tức là nếu không thì
bản vá kết quả sẽ là một loạt các thao tác xóa và chèn được trộn lẫn với nhau với ngữ cảnh
dòng).
Khi được sử dụng với -M, một tệp được viết lại hoàn toàn cũng được coi là nguồn của
đổi tên (thường -M chỉ coi một tệp đã biến mất là nguồn của việc đổi tên),
và số n kiểm soát khía cạnh này của tùy chọn -B (mặc định là 50%). -20%
chỉ định rằng một thay đổi có thêm và xóa so với 20% hoặc nhiều hơn
kích thước của tệp đủ điều kiện để được chọn làm nguồn có thể đổi tên thành
một tập tin khác.
-NS[ ], --find-rename [= ]
Phát hiện đổi tên. Nếu n được chỉ định, nó là một ngưỡng trên chỉ số tương tự (tức là
số lượng thêm / xóa so với kích thước của tệp). Ví dụ, -90% có nghĩa là
Git nên coi một cặp xóa / thêm là một sự đổi tên nếu hơn 90% tệp
không thay đổi. Nếu không có dấu%, số sẽ được đọc dưới dạng phân số, với
dấu thập phân trước nó. Tức là, -M5 trở thành 0.5, và do đó bằng với -50%.
Tương tự, -M05 giống với -M5%. Để giới hạn việc phát hiện đối với các tên chính xác, hãy sử dụng -M100%.
Chỉ số tương tự mặc định là 50%.
-NS[ ], --find-copy [= ]
Phát hiện các bản sao cũng như đổi tên. Xem thêm - tìm kiếm bản sao-khó hơn. Nếu n được chỉ định, nó
có nghĩa tương tự như đối với -M .
--find-copy-khó hơn
Vì lý do hiệu suất, theo mặc định, tùy chọn -C chỉ tìm thấy các bản sao nếu tệp gốc
của bản sao đã được sửa đổi trong cùng một bộ thay đổi. Cờ này làm cho lệnh được kiểm tra
các tệp chưa sửa đổi như là ứng cử viên cho nguồn của bản sao. Đây là một rất đắt
hoạt động cho các dự án lớn, vì vậy hãy sử dụng nó một cách thận trọng. Đưa ra nhiều lựa chọn -C
có tác dụng tương tự.
-D, - có thể đảo ngược-xóa
Bỏ qua hình ảnh trước để xóa, tức là chỉ in tiêu đề nhưng không in sự khác biệt giữa
preimage và / dev / null. Bản vá kết quả không có nghĩa là được áp dụng với bản vá hoặc
git áp dụng; điều này chỉ dành cho những người muốn chỉ tập trung vào việc xem xét
văn bản sau khi thay đổi. Ngoài ra, đầu ra rõ ràng là thiếu đủ thông tin để
áp dụng một bản vá như vậy ngược lại, thậm chí theo cách thủ công, do đó có tên của tùy chọn.
Khi được sử dụng cùng với -B, cũng bỏ qua hình ảnh trước trong phần xóa của a
xóa / tạo cặp.
-l
Các tùy chọn -M và -C yêu cầu thời gian xử lý O (n ^ 2) trong đó n là số
mục tiêu đổi tên / sao chép tiềm năng. Tùy chọn này ngăn không cho phát hiện đổi tên / sao chép chạy
nếu số lượng mục tiêu đổi tên / sao chép vượt quá số lượng được chỉ định.
--diff-filter = [(A | C | D | M | R | T | U | X | B) ... [*]]
Chỉ chọn các tệp được Thêm (A), Đã sao chép (C), Đã xóa (D), Đã sửa đổi (M), Đã đổi tên
(R), có loại của chúng (tức là tệp thông thường, liên kết biểu tượng, mô-đun con, ...) đã thay đổi (T), được
Chưa hợp nhất (U), là Không xác định (X), hoặc đã ghép nối của chúng Bị hỏng (B). Bất kỳ sự kết hợp nào
có thể sử dụng các ký tự bộ lọc (bao gồm cả ký tự không). Khi * (Tất cả hoặc không) được thêm vào
kết hợp, tất cả các đường dẫn được chọn nếu có bất kỳ tệp nào khớp với
tiêu chí trong so sánh; nếu không có tệp nào phù hợp với các tiêu chí khác, không có gì
được chọn.
-NS
Tìm kiếm sự khác biệt làm thay đổi số lần xuất hiện của chuỗi được chỉ định
(tức là thêm / xóa) trong một tệp. Dành cho việc sử dụng tập lệnh.
Nó hữu ích khi bạn đang tìm kiếm một khối mã chính xác (như cấu trúc) và muốn
để biết lịch sử của khối đó kể từ khi nó ra đời lần đầu tiên: hãy sử dụng tính năng
lặp đi lặp lại để cung cấp khối thú vị trong hình ảnh trước trở lại -S và tiếp tục
cho đến khi bạn nhận được phiên bản đầu tiên của khối.
-NS
Tìm kiếm những điểm khác biệt có văn bản vá lỗi chứa các dòng được thêm / bớt trùng khớp .
Để minh họa sự khác biệt giữa -S --pickaxe-regex và -G , xem xét
một cam kết với sự khác biệt sau trong cùng một tệp:
+ return! regexec (regexp, hai-> ptr, 1, ®match, 0);
...
- hit =! regexec (regexp, mf2.ptr, 1, ®match, 0);
Trong khi git log -G "regexec \ (regexp" sẽ hiển thị cam kết này, git log -S "regexec \ (regexp" "
--pickaxe-regex sẽ không (vì số lần xuất hiện của chuỗi đó không
thay đổi).
Xem chọn lọc vào trong gitdiffcore(7) để biết thêm thông tin.
--tickaxe-all
Khi -S hoặc -G tìm thấy một thay đổi, hãy hiển thị tất cả các thay đổi trong bộ thay đổi đó, không chỉ
các tệp có thay đổi trong .
--pickaxe-regex
Đối xử với được cung cấp cho -S dưới dạng một biểu thức chính quy POSIX mở rộng để đối sánh.
-O
Xuất bản vá theo thứ tự được chỉ định trong , có một quả cầu vỏ
mẫu trên mỗi dòng. Điều này ghi đè biến cấu hình diff.orderFile (xem git-
cấu hình(1)). Để hủy bỏ diff.orderFile, hãy sử dụng -O / dev / null.
-R
Hoán đổi hai đầu vào; nghĩa là, hiển thị sự khác biệt từ chỉ mục hoặc tệp trên đĩa sang cây
nội dung.
- tương đối [= ]
Khi chạy từ một thư mục con của dự án, nó có thể được yêu cầu loại trừ các thay đổi bên ngoài
thư mục và hiển thị tên đường dẫn liên quan đến nó với tùy chọn này. Khi bạn không ở
một thư mục con (ví dụ: trong một kho lưu trữ trống), bạn có thể đặt tên cho thư mục con nào để tạo
đầu ra liên quan đến bằng cách đưa ra một như một lập luận.
-một văn bản
Coi tất cả các tệp là văn bản.
--bỏ qua-không gian-at-eol
Bỏ qua những thay đổi về khoảng trắng tại EOL.
-b, --ignore-space-change
Bỏ qua những thay đổi về lượng khoảng trắng. Điều này bỏ qua khoảng trắng ở cuối dòng và
coi tất cả các chuỗi khác của một hoặc nhiều ký tự khoảng trắng là tương đương.
-w, - không gian rộng rãi
Bỏ qua khoảng trắng khi so sánh các dòng. Điều này bỏ qua sự khác biệt ngay cả khi một dòng có
khoảng trắng mà dòng kia không có.
--bỏ qua-dòng trống
Bỏ qua các thay đổi có dòng trống.
--inter-hunk-context =
Hiển thị ngữ cảnh giữa các nhóm khác nhau, lên đến số dòng được chỉ định, do đó
hợp nhất những người thân thiết với nhau.
-W, - chức năng-bối cảnh
Hiển thị toàn bộ các chức năng xung quanh của các thay đổi.
--mã thoát
Làm cho chương trình thoát ra với các mã tương tự như khác(1). Đó là, nó thoát ra với 1 nếu có
là sự khác biệt và 0 có nghĩa là không có sự khác biệt.
--Yên lặng
Tắt tất cả đầu ra của chương trình. Ngụ ý --exit-code.
--ext-diff
Cho phép thực thi một trình trợ giúp khác biệt bên ngoài. Nếu bạn đặt một trình điều khiển khác bên ngoài với
gitattribut(5), bạn cần sử dụng tùy chọn này với nhật ký git(1) và bạn bè.
--no-ext-diff
Không cho phép trình điều khiển khác biệt bên ngoài.
--textconv, --no-textconv
Cho phép (hoặc không cho phép) chạy các bộ lọc chuyển đổi văn bản bên ngoài khi so sánh hệ nhị phân
các tập tin. Nhìn thấy gitattribut(5) để biết chi tiết. Bởi vì bộ lọc textconv thường là
chuyển đổi một chiều, sự khác biệt kết quả phù hợp cho con người, nhưng không thể
được áp dụng. Vì lý do này, bộ lọc textconv chỉ được bật theo mặc định cho git-
khác(1) nhật ký git(1), nhưng không phải cho git-format-patch(1) hoặc các lệnh khác nhau về hệ thống ống nước.
--ignore-submodules [= ]
Bỏ qua các thay đổi đối với mô-đun con trong quá trình tạo khác biệt. có thể là "không",
"không theo dõi", "bẩn" hoặc "tất cả", đó là mặc định. Sử dụng "không" sẽ xem xét
mô-đun con được sửa đổi khi nó chứa các tệp chưa được theo dõi hoặc sửa đổi hoặc HEAD của nó
khác với cam kết được ghi trong siêu dự án và có thể được sử dụng để ghi đè bất kỳ
cài đặt của bỏ qua tùy chọn trong git-config(1) hoặc mô-đun git(5). Khi "không theo dõi" là
các mô-đun con đã sử dụng không bị coi là bẩn khi chúng chỉ chứa nội dung chưa được kiểm soát (nhưng
chúng vẫn được quét để tìm nội dung đã sửa đổi). Sử dụng "dirty" bỏ qua tất cả các thay đổi đối với
cây công việc của các mô-đun con, chỉ những thay đổi đối với các cam kết được lưu trữ trong siêu dự án là
hiển thị (đây là hành vi cho đến 1.7.0). Sử dụng "tất cả" sẽ ẩn tất cả các thay đổi đối với
mô-đun con.
--src-prefix =
Hiển thị tiền tố nguồn đã cho thay vì "a /".
--dst-prefix =
Hiển thị tiền tố đích đã cho thay vì "b /".
- không có tiền tố
Không hiển thị bất kỳ tiền tố nguồn hoặc đích nào.
Để được giải thích chi tiết hơn về các tùy chọn phổ biến này, hãy xem thêm gitdiffcore(7).
Id của một đối tượng cây cần phân biệt.
--được lưu vào bộ nhớ đệm
hoàn toàn không xem xét tập tin trên đĩa
-m
Theo mặc định, các tệp được ghi trong chỉ mục nhưng không được kiểm tra sẽ được báo cáo là đã xóa.
Lá cờ này làm cho git chỉ số khác nói rằng tất cả các tệp chưa được kiểm xuất đều được cập nhật.
RAW OUTPUT FORMAT
Định dạng đầu ra thô từ "git-diff-index", "git-diff-tree", "git-diff-files" và "git
diff --raw "rất giống nhau.
Tất cả các lệnh này đều so sánh hai tập hợp thứ; những gì được so sánh khác nhau:
git-diff-index
so sánh và các tệp trên hệ thống tệp.
git-diff-index --cached
so sánh và chỉ mục.
git-diff-tree [-r] [ ...]
so sánh các cây được đặt tên bởi hai đối số.
git-diff-files [ ...]
so sánh chỉ mục và các tệp trên hệ thống tệp.
Lệnh "git-diff-tree" bắt đầu đầu ra của nó bằng cách in ra mã băm của những gì đang được
so. Sau đó, tất cả các lệnh in một dòng đầu ra cho mỗi tệp đã thay đổi.
Một dòng đầu ra được định dạng theo cách này:
chỉnh sửa tại chỗ: 100644 100644 bcd1234 ... 0123456 ... M file0
copy-edit: 100644 100644 abcd123 ... 1234567 ... C68 file1 file2
đổi tên-chỉnh sửa: 100644 100644 abcd123 ... 1234567 ... R86 file1 file3
tạo: 000000 100644 0000000 ... 1234567 ... Một tệp 4
xóa: 100644 000000 1234567 ... 0000000 ... D tệp5
unmerged: 000000 000000 0000000 ... 0000000 ... U file6
Đó là, từ trái sang phải:
1. dấu hai chấm.
2. chế độ cho "src"; 000000 nếu tạo hoặc không hợp nhất.
3. một khoảng trắng.
4. chế độ cho "dst"; 000000 nếu xóa hoặc hủy hợp nhất.
5. một khoảng trắng.
6. sha1 cho "src"; 0 {40} nếu tạo hoặc chưa hợp nhất.
7. một khoảng trắng.
8. sha1 cho "dst"; 0 {40} nếu tạo, chưa hợp nhất hoặc "xem cây công việc".
9. một khoảng trắng.
10. trạng thái, theo sau là số "điểm" tùy chọn.
11. một tab hoặc một NUL khi -z tùy chọn được sử dụng.
12. đường dẫn cho "src"
13. một tab hoặc một NUL khi -z tùy chọn được sử dụng; chỉ tồn tại đối với C hoặc R.
14. đường dẫn cho "dst"; chỉ tồn tại đối với C hoặc R.
15. một LF hoặc một NUL khi -z tùy chọn được sử dụng, để kết thúc bản ghi.
Các thư trạng thái có thể có là:
· A: bổ sung một tệp
· C: bản sao của một tập tin vào một tập tin mới
· D: xóa một tập tin
· M: sửa đổi nội dung hoặc chế độ của tệp
· R: đổi tên tệp
· T: thay đổi loại tệp
· U: tệp không được hợp nhất (bạn phải hoàn thành việc hợp nhất trước khi nó có thể được cam kết)
· X: loại thay đổi "không xác định" (hầu hết có thể là lỗi, vui lòng báo cáo nó)
Các chữ cái trạng thái C và R luôn được theo sau bởi một số điểm (biểu thị phần trăm của
sự tương đồng giữa nguồn và mục tiêu của việc di chuyển hoặc sao chép). Thư trạng thái M có thể là
tiếp theo là điểm số (biểu thị tỷ lệ phần trăm không giống nhau) cho các lần ghi lại tệp.
được hiển thị dưới dạng tất cả 1 nếu một tệp là mới trên hệ thống tệp và nó không đồng bộ với
chỉ số.
Ví dụ:
: 100644 100644 5be4a4 ...... 000000 ...... M file.c
Khi tùy chọn -z không được sử dụng, các ký tự TAB, LF và dấu gạch chéo ngược trong tên đường dẫn được biểu diễn
như \ t, \ n và \\ tương ứng.
KHÁC BIỆT FORMAT CHO NHẬP KHẨU
"git-diff-tree", "git-diff-files" và "git-diff --raw" có thể -c or --cc tùy chọn để
tạo ra đầu ra khác nhau cũng cho các cam kết hợp nhất. Đầu ra khác với định dạng được mô tả
ở trên theo cách sau:
1. có một dấu hai chấm cho mỗi phụ huynh
2. có nhiều chế độ "src" và "src" sha1
3. trạng thái là các ký tự trạng thái được nối cho mỗi phụ huynh
4. không có số "điểm" tùy chọn
5. đường dẫn duy nhất, chỉ dành cho "dst"
Ví dụ:
:: 100644 100644 100644 fabadb8 ... cc95eb0 ... 4866510 ... MM description.c
Lưu ý rằng kết hợp khác chỉ liệt kê các tệp đã được sửa đổi từ tất cả các bậc cha mẹ.
PHÁT ĐIỆN BẢN VÁ LỖI CÙNG VỚI -P
Khi "git-diff-index", "git-diff-tree" hoặc "git-diff-files" được chạy với -p tùy chọn, "git
diff "mà không có --thô hoặc "git log" với tùy chọn "-p", chúng không tạo ra
đầu ra được mô tả ở trên; thay vào đó họ tạo ra một tập tin vá lỗi. Bạn có thể tùy chỉnh việc tạo
các bản vá như vậy thông qua các biến môi trường GIT_EXTERNAL_DIFF và GIT_DIFF_OPTS.
Những gì tùy chọn -p tạo ra hơi khác so với định dạng khác biệt truyền thống:
1. Nó được đặt trước bằng tiêu đề "git diff" trông giống như sau:
diff --git a / file1 b / file2
Tên tệp a / và b / giống nhau trừ khi liên quan đến đổi tên / sao chép. Đặc biệt, ngay cả
để tạo hoặc xóa, / dev / null là không được sử dụng thay cho a / hoặc b /
tên tệp.
Khi liên quan đến đổi tên / sao chép, tệp1 và tệp2 hiển thị tên của tệp nguồn của
đổi tên / sao chép và tên của tệp mà đổi tên / sao chép tạo ra, tương ứng.
2. Tiếp theo là một hoặc nhiều dòng tiêu đề mở rộng:
chế độ cũ
chế độ mới
chế độ tệp đã xóa
chế độ tệp mới
sao chép từ
sao chép vào
đổi tên từ
đổi tên thành
chỉ số tương tự
chỉ số khác biệt
mục lục ..
Chế độ tệp được in dưới dạng số bát phân gồm 6 chữ số bao gồm loại tệp và tệp
bit quyền.
Tên đường dẫn trong tiêu đề mở rộng không bao gồm tiền tố a / và b /.
Chỉ số tương tự là phần trăm của các dòng không thay đổi và chỉ số khác biệt
là phần trăm các dòng đã thay đổi. Nó là một số nguyên được làm tròn xuống, theo sau là một
ký hiệu phần trăm. Do đó, giá trị chỉ mục tương tự là 100% được dành riêng cho hai tệp bằng nhau,
trong khi 100% không giống nhau có nghĩa là không có dòng nào từ tệp cũ chuyển nó thành tệp mới
một.
Dòng chỉ mục bao gồm tổng kiểm tra SHA-1 trước và sau khi thay đổi. Các Là
bao gồm nếu chế độ tệp không thay đổi; nếu không, các dòng riêng biệt cho biết cũ
và chế độ mới.
3. Các ký tự TAB, LF, dấu ngoặc kép và dấu gạch chéo ngược trong tên đường dẫn được biểu diễn dưới dạng \ t, \ n,
\ "và \\ tương ứng. Nếu cần thay thế như vậy thì toàn bộ
tên đường dẫn được đặt trong dấu ngoặc kép.
4. Tất cả các tệp file1 trong đầu ra tham chiếu đến các tệp trước cam kết và tất cả tệp 2
tệp tham chiếu đến tệp sau khi cam kết. Việc áp dụng từng thay đổi cho từng
một cách tuần tự. Ví dụ: bản vá này sẽ hoán đổi a và b:
diff --git a / ab / b
đổi tên từ một
đổi tên thành b
diff --git a / bb / a
đổi tên từ b
đổi tên thành
KẾT HỢP KHÁC BIỆT FORMAT
Bất kỳ lệnh tạo khác biệt nào đều có thể sử dụng tùy chọn -c hoặc --cc để tạo ra một kết hợp khác khi nào
hiển thị một hợp nhất. Đây là định dạng mặc định khi hiển thị kết hợp với git-khác biệt(1) hoặc git-
hiển thị(1). Cũng lưu ý rằng bạn có thể cung cấp tùy chọn -m cho bất kỳ lệnh nào trong số các lệnh này để buộc
thế hệ khác biệt với các cá thể cha mẹ của một hợp nhất.
A kết hợp khác định dạng trông như thế này:
diff --combined description.c
chỉ mục fabadb8, cc95eb0..4866510
--- a / description.c
+++ b / mô tả.c
@@@ -98,20 -98,12 +98,20 @@@
return (a_date> b_date)? -1: (a_date == b_date)? 0: 1;
}
- static void description (char * arg)
-static void description (struct commit * cmit, int last_one)
++ static void description (char * arg, int last_one)
{
+ unsigned char sha1 [20];
+ struct commit * cmit;
struct commit_list * list;
static int khởi tạo = 0;
struct commit_name * n;
+ if (get_sha1 (arg, sha1) <0)
+ cách sử dụng (mô_tạo);
+ cmit = lookup_commit_reference (sha1);
+ if (! cmit)
+ cách sử dụng (mô_tạo);
+
if (! khởi tạo) {
khởi tạo = 1;
for_each_ref (get_name);
1. Nó được đặt trước bằng một tiêu đề "git diff", trông giống như thế này (khi -c Tùy chọn là
đã sử dụng):
tập tin diff --combined
hoặc như thế này (khi --cc tùy chọn được sử dụng):
tệp diff --cc
2. Theo sau nó là một hoặc nhiều dòng tiêu đề mở rộng (ví dụ này cho thấy sự hợp nhất với
hai cha mẹ):
mục lục , ..
chế độ , ..
chế độ tệp mới
chế độ tệp đã xóa ,
Chế độ , .. dòng chỉ xuất hiện nếu ít nhất một trong các Là
khác với phần còn lại. Tiêu đề mở rộng với thông tin về nội dung được phát hiện
chuyển động (đổi tên và phát hiện sao chép) được thiết kế để hoạt động với sự khác biệt của hai
và không được sử dụng bởi định dạng khác biệt kết hợp.
3. Tiếp theo là tiêu đề hai dòng từ tệp / đến tệp
--- một tập tin
+++ b / tệp
Tương tự như tiêu đề hai dòng cho truyền thống thống nhât định dạng khác, / dev / null được sử dụng để
tín hiệu các tệp đã tạo hoặc bị xóa.
4. Định dạng tiêu đề đoạn mã được sửa đổi để ngăn mọi người vô tình đưa nó vào
bản vá -p1. Định dạng khác biệt kết hợp đã được tạo để xem xét các thay đổi cam kết hợp nhất và
không có nghĩa là để áp dụng. Sự thay đổi tương tự như sự thay đổi trong phần mở rộng chỉ số
tiêu đề:
@@@ @@@
Có (số lượng phụ huynh + 1) ký tự @ trong tiêu đề phân đoạn cho sự khác biệt kết hợp
định dạng.
Không giống như truyền thống thống nhât định dạng khác, hiển thị hai tệp A và B với một
cột có - (trừ - xuất hiện ở A nhưng bị loại bỏ ở B), + (cộng - thiếu trong A nhưng
được thêm vào tiền tố B), hoặc "" (khoảng trắng - không thay đổi), định dạng này so sánh hai hoặc nhiều tệp
file1, file2, ... với một tệp X và cho biết X khác với từng tệpN như thế nào. Một cột
đối với mỗi tệpN được thêm vào trước dòng đầu ra để lưu ý dòng của X khác với
nó.
A - ký tự trong cột N có nghĩa là dòng xuất hiện trong tệpN nhưng nó không xuất hiện
Trong kết quả. Ký tự A + trong cột N có nghĩa là dòng xuất hiện trong kết quả,
và fileN không có dòng đó (nói cách khác, dòng đã được thêm vào, từ điểm
xem của phụ huynh đó).
Trong đầu ra ví dụ trên, chữ ký hàm đã được thay đổi từ cả hai tệp (do đó hai
- loại bỏ từ cả tệp1 và tệp2, cộng với ++ có nghĩa là một dòng đã được thêm vào không
xuất hiện trong file1 hoặc file2). Ngoài ra, tám dòng khác cũng giống như từ file1 nhưng làm
không xuất hiện trong file2 (do đó có tiền tố là +).
Khi được hiển thị bởi git diff-tree -c, nó sẽ so sánh cha mẹ của một cam kết hợp nhất với hợp nhất
kết quả (tức là file1..fileN là cha mẹ). Khi được hiển thị bởi git diff-files -c, nó sẽ so sánh
hai cha mẹ hợp nhất chưa được giải quyết với tệp cây làm việc (tức là tệp1 là giai đoạn 2 hay còn gọi là
"phiên bản của chúng tôi", tệp2 là giai đoạn 3 hay còn gọi là "phiên bản của họ").
KHÁC KHÁC BIỆT M FORU ĐƠN
Tùy chọn --summary mô tả các tệp mới được thêm, xóa, đổi tên và sao chép. --Stat
tùy chọn thêm khác biệt(1) đồ thị đến đầu ra. Các tùy chọn này có thể được kết hợp với các
các tùy chọn, chẳng hạn như -p, và dành cho con người.
Khi hiển thị một thay đổi liên quan đến đổi tên hoặc sao chép, đầu ra --stat định dạng
tên đường dẫn một cách gọn gàng bằng cách kết hợp tiền tố và hậu tố chung của tên đường dẫn. Ví dụ, một
thay đổi di chuyển vòm / i386 / Makefile thành vòm / x86 / Makefile trong khi sửa đổi 4 dòng sẽ được
được hiển thị như thế này:
Arch / {i386 => x86} / Makefile | 4 + -
Tùy chọn --numstat cung cấp cho khác biệt(1) thông tin nhưng được thiết kế cho máy dễ dàng hơn
sự tiêu thụ. Một mục nhập trong đầu ra --numstat trông giống như sau:
1 2 ĐỌC SÁCH
3 1 vòm / {i386 => x86} / Makefile
Đó là, từ trái sang phải:
1. số dòng thêm vào;
2. một tab;
3. số dòng bị xóa;
4. một tab;
5. tên đường dẫn (có thể với thông tin đổi tên / sao chép);
6. một dòng mới.
Khi tùy chọn đầu ra -z có hiệu lực, đầu ra được định dạng theo cách này:
1 2 ĐỌC KHÔNG
3 1 NUL vòm / i386 / Makefile NUL vòm / x86 / Makefile NUL
Đó là:
1. số dòng thêm vào;
2. một tab;
3. số dòng bị xóa;
4. một tab;
5. một NUL (chỉ tồn tại nếu được đổi tên / sao chép);
6. tên đường dẫn trong preimage;
7. một NUL (chỉ tồn tại nếu được đổi tên / sao chép);
8. tên đường dẫn trong postimage (chỉ tồn tại nếu được đổi tên / sao chép);
9. một NUL.
NUL bổ sung trước đường dẫn preimage trong trường hợp được đổi tên là cho phép các tập lệnh đọc
đầu ra để cho biết bản ghi hiện tại đang được đọc là bản ghi đường đơn hay bản đổi tên / bản sao
ghi lại mà không cần đọc trước. Sau khi đọc các dòng được thêm và xóa, đọc đến NUL
sẽ mang lại tên đường dẫn, nhưng nếu đó là NUL, bản ghi sẽ hiển thị hai đường dẫn.
ĐIỀU HÀNH CHẾ ĐỘ
Bạn có thể chọn xem bạn có muốn tin tưởng hoàn toàn vào tệp chỉ mục hay không (sử dụng --được lưu vào bộ nhớ đệm lá cờ)
hoặc yêu cầu logic khác hiển thị bất kỳ tệp nào không khớp với trạng thái thống kê
"tạm thời thay đổi". Cả hai hoạt động này thực sự rất hữu ích.
Đã lưu vào bộ nhớ cache PHƯƠNG THỨC
If --được lưu vào bộ nhớ đệm được chỉ định, nó cho phép bạn hỏi:
chỉ cho tôi sự khác biệt giữa HEAD và chỉ mục hiện tại
nội dung (những nội dung tôi sẽ viết bằng 'git write-tree')
Ví dụ: giả sử bạn đã làm việc trên thư mục làm việc của mình, cập nhật một số tệp
trong chỉ mục và sẵn sàng cam kết. Bạn muốn xem chính xác gì bạn đang đi
cam kết, mà không cần phải viết một đối tượng cây mới và so sánh nó theo cách đó, và để làm điều đó,
bạn chỉ cần làm
git diff-index --cached HEAD
Ví dụ: giả sử tôi đã đổi tên commit.c thành git-commit.c và tôi đã thực hiện chỉ mục cập nhật
để làm cho điều đó có hiệu quả trong tệp chỉ mục. git diff-files sẽ không hiển thị gì cả,
vì tệp chỉ mục khớp với thư mục làm việc của tôi. Nhưng làm một git chỉ số khác làm:
torvalds @ ppc970:~ / git> git diff-index --cached HEAD
-100644 blob 4161aecc6700a2eb579e842af0b7f22b98443f74 commit.c
+100644 blob 4161aecc6700a2eb579e842af0b7f22b98443f74 git-commit.c
Bạn có thể dễ dàng thấy rằng ở trên là một sự đổi tên.
Trên thực tế, git diff-index --cached nên luôn luôn hoàn toàn tương đương với việc thực sự làm một
git cây viết và so sánh điều đó. Ngoại trừ cái này đẹp hơn nhiều trong trường hợp bạn
chỉ muốn kiểm tra xem bạn đang ở đâu.
Vì vậy, thực hiện git diff-index --cached về cơ bản rất hữu ích khi bạn tự hỏi mình
"tôi đã đánh dấu những gì để cam kết và có gì khác biệt so với cam kết trước đó?"
cây".
KHÔNG được lưu vào bộ nhớ đệm PHƯƠNG THỨC
Chế độ "không được lưu vào bộ nhớ đệm" có cách tiếp cận khác và có khả năng hữu ích hơn
hai trong đó những gì nó làm không thể được mô phỏng bằng một git cây viết + git cây khác. Như vậy
đó là chế độ mặc định Phiên bản không được lưu trong bộ nhớ cache đặt câu hỏi:
cho tôi thấy sự khác biệt giữa HEAD và hiện đã được kiểm tra
cây - chỉ mục nội dung _và_ tệp không cập nhật
đây rõ ràng cũng là một câu hỏi rất hữu ích vì nó cho bạn biết bạn có thể cam kết.
Một lần nữa, đầu ra khớp với git cây khác -r xuất ra một tee, nhưng có một sự thay đổi.
Điều khó khăn là nếu một số tệp không khớp với chỉ mục, chúng tôi không có kho lưu trữ dự phòng
thứ cho nó và chúng tôi sử dụng ma thuật sha1 "hoàn toàn bằng XNUMX" để thể hiện điều đó. Vậy hãy nói rằng bạn
đã chỉnh sửa kernel/sched.c, nhưng chưa thực sự thực hiện git cập nhật-chỉ mục trên đó chưa -
không có "đối tượng" nào được liên kết với trạng thái mới và bạn nhận được:
torvalds @ ppc970:~/v2.6/linux> git diff-index --abbrev ĐẦU
:100644 100664 7476bb... 000000... kernel/sched.c
tức là, nó cho thấy cây đã thay đổi và kernel/sched.c đó không được cập nhật
và có thể chứa nội dung mới. Sha1 hoàn toàn bằng XNUMX có nghĩa là để có được sự khác biệt thực sự, bạn cần phải
nhìn trực tiếp vào đối tượng trong thư mục làm việc thay vì thực hiện đối tượng với đối tượng
khác biệt.
Chú thích
Giống như các lệnh khác thuộc loại này, git chỉ số khác thực sự không nhìn vào
toàn bộ nội dung của tập tin. Vì vậy có lẽ kernel/sched.c chưa thực sự thay đổi, và nó
chỉ là bạn đã chạm vào nó. Trong cả hai trường hợp, đó là một lưu ý mà bạn cần phải git
cập nhật-chỉ mục nó để làm cho chỉ mục được đồng bộ.
Chú thích
Bạn có thể có một hỗn hợp các tập tin hiển thị là "đã được cập nhật" và "vẫn còn bẩn trong
thư mục làm việc" cùng nhau. Bạn luôn có thể biết tập tin nào đang ở trạng thái nào,
vì những cái "đã được cập nhật" hiển thị sha1 hợp lệ và "không đồng bộ với
index" sẽ luôn có sha1 hoàn toàn bằng XNUMX đặc biệt.
GIT
Một phần của git(1) bộ
Sử dụng git-diff-index trực tuyến bằng dịch vụ onworks.net