Tiếng AnhTiếng PhápTiếng Tây Ban Nha

Ad


Biểu tượng yêu thích OnWorks

git-log - Trực tuyến trên Đám mây

Chạy git-log trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks trên 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

Đây là git-log lệnh có thể được 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 giả lập 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-log - Hiển thị nhật ký cam kết

SYNOPSIS


git đăng nhập [ ] [ ] [[-] ...]

MÔ TẢ


Hiển thị các bản ghi cam kết.

Lệnh có các tùy chọn áp dụng cho lệnh git rev-list để kiểm soát những gì được hiển thị
và cách thức cũng như các tùy chọn áp dụng cho các lệnh git diff- * để kiểm soát cách các thay đổi của từng lệnh
giới thiệu cam kết được hiển thị.

LỰA CHỌN


--theo dõi
Tiếp tục liệt kê lịch sử của một tệp ngoài tên (chỉ hoạt động cho một tệp duy nhất).

- không trang trí, - trang trí [= ngắn | đầy đủ | không]
In ra tên giới thiệu của bất kỳ cam kết nào được hiển thị. Nếu như ngắn được chỉ định, giới thiệu
tiền tố tên refs / đầu /, refs / tags /refs / điều khiển từ xa / sẽ không được in. Nếu như Full
được chỉ định, tên ref đầy đủ (bao gồm cả tiền tố) sẽ được in. Tùy chọn mặc định
is ngắn.

--nguồn
In ra tên tham chiếu được cung cấp trên dòng lệnh mà từng cam kết đạt được.

--use-mailmap
Sử dụng tệp bản đồ thư để ánh xạ tên tác giả và người cam kết và địa chỉ email thành chuẩn
tên thật và địa chỉ email. Nhìn thấy git-shortlog(1).

--khác hoàn toàn
Nếu không có cờ này, git log -p ... hiển thị các cam kết chạm vào các đường dẫn được chỉ định,
và khác nhau về các đường dẫn được chỉ định giống nhau. Với điều này, sự khác biệt đầy đủ được hiển thị cho
cam kết chạm vào các đường dẫn được chỉ định; điều này có nghĩa rằng " ... "giới hạn chỉ
cam kết và không giới hạn khác biệt cho những cam kết đó.

Lưu ý rằng điều này ảnh hưởng đến tất cả các loại đầu ra dựa trên khác biệt, ví dụ như những loại được sản xuất bởi --stat,
và vv

- kích thước nhật ký
Bao gồm một dòng “kích thước nhật ký ”Trong đầu ra cho mỗi cam kết, trong đó Là
độ dài của thông điệp cam kết đó tính bằng byte. Dự định tăng tốc các công cụ đọc nhật ký
thông báo từ đầu ra git log bằng cách cho phép chúng cấp phát trước không gian.

-L , : , -L: :
Theo dõi sự phát triển của phạm vi dòng được cung cấp bởi " , "(hoặc tên hàm
regex ) trong . Bạn không thể đưa ra bất kỳ giới hạn pathspec nào. Đây là
hiện bị giới hạn trong một cuộc dạo chơi bắt đầu từ một bản sửa đổi, tức là bạn chỉ có thể đưa ra
không hoặc một đối số sửa đổi tích cực. Bạn có thể chỉ định tùy chọn này nhiều lần.

và có thể thực hiện một trong các hình thức sau:

· con số

Nếu như hoặc là một số, nó chỉ định một số dòng tuyệt đối (số dòng
từ năm 1).

· / Regex /

Biểu mẫu này sẽ sử dụng dòng đầu tiên khớp với biểu thức POSIX đã cho. Nếu như là một
regex, nó sẽ tìm kiếm từ cuối phạm vi -L trước đó, nếu có, nếu không
từ đầu tệp. Nếu như là “^ / regex /”, nó sẽ tìm kiếm từ đầu
tập tin. Nếu như là một regex, nó sẽ tìm kiếm bắt đầu từ dòng do .

· + Bù đắp hoặc -offset

Điều này chỉ hợp lệ cho và sẽ chỉ định một số dòng trước hoặc sau
dòng được đưa ra bởi .

Nếu như ": ”Được đưa ra thay cho và , nó là một biểu thức chính quy
biểu thị phạm vi từ dòng tên chức năng đầu tiên phù hợp với , lên đến
dòng funcname tiếp theo. “: ”Tìm kiếm từ cuối phạm vi -L trước đó, nếu
bất kỳ, nếu không từ đầu tệp. “^: ”Tìm kiếm từ đầu tệp.


Chỉ hiển thị các cam kết trong phạm vi sửa đổi được chỉ định. Khi không Là
được chỉ định, nó mặc định là HEAD (tức là toàn bộ lịch sử dẫn đến cam kết hiện tại).
origin..HEAD chỉ định tất cả các cam kết có thể truy cập được từ cam kết hiện tại (tức là HEAD),
nhưng không phải từ nguồn gốc. Để có danh sách đầy đủ các cách đánh vần , xem
Chỉ định Ranges phần gitrevision(7).

[-] ...
Chỉ hiển thị các cam kết đủ để giải thích cách các tệp khớp với các tệp đã chỉ định
những con đường đã ra đời. Nhìn thấy Lịch Sử đơn giản hóa bên dưới để biết chi tiết và khác
các chế độ đơn giản hóa.

Các đường dẫn có thể cần phải có tiền tố '' - '' để tách chúng khỏi các tùy chọn hoặc
phạm vi sửa đổi, khi phát sinh sự nhầm lẫn.

Cam kết Hạn chế
Bên cạnh việc chỉ định một loạt các cam kết cần được liệt kê bằng cách sử dụng các ký hiệu đặc biệt
giải thích trong mô tả, giới hạn cam kết bổ sung có thể được áp dụng.

Sử dụng nhiều tùy chọn hơn thường giới hạn đầu ra hơn nữa (ví dụ --since = giới hạn cho
cam kết mới hơn và sử dụng nó với --grep = giới hạn hơn nữa đối với cam kết
thông báo nhật ký của ai có dòng trùng khớp ), trừ khi có ghi chú khác.

Lưu ý rằng những điều này được áp dụng trước các tùy chọn sắp xếp và định dạng cam kết, chẳng hạn như
--đảo ngược.

- , -n , --max-count =
Giới hạn số lượng cam kết xuất.

--skip =
Bỏ qua con số cam kết trước khi bắt đầu hiển thị đầu ra cam kết.

--since = , - sau =
Hiển thị các cam kết gần đây hơn một ngày cụ thể.

--until = , - trước =
Hiển thị các cam kết cũ hơn một ngày cụ thể.

--author = , --committer =
Giới hạn đầu ra cam kết đối với những đầu ra có dòng tiêu đề tác giả / cam kết phù hợp với
mẫu được chỉ định (biểu thức chính quy). Với nhiều hơn một --author = , cam kết
tác giả có tác giả phù hợp với bất kỳ mẫu nào trong số các mẫu nhất định được chọn (tương tự cho nhiều
--committer = ).

--grep-reflog =
Giới hạn đầu ra cam kết đối với những đầu ra có mục nhập reflog khớp với mẫu được chỉ định
(biểu hiện thông thường). Với nhiều hơn một --grep-reflog, cam kết thông báo reflog của ai
phù hợp với bất kỳ mẫu nào đã cho được chọn. Đó là một lỗi khi sử dụng tùy chọn này trừ khi
--walk-reflogs đang được sử dụng.

--grep =
Giới hạn đầu ra cam kết đối với những đầu ra có thông báo nhật ký phù hợp với mẫu được chỉ định
(biểu hiện thông thường). Với nhiều hơn một --grep = , cam kết tin nhắn của ai
phù hợp với bất kỳ mẫu nào trong số các mẫu đã cho được chọn (nhưng hãy xem - tất cả đối sánh).

Khi --show-ghi chú có hiệu lực, thông báo từ các ghi chú được khớp như thể
một phần của thông báo nhật ký.

- tất cả các trận đấu
Giới hạn đầu ra cam kết đối với những đầu ra phù hợp với tất cả --grep đã cho, thay vì những đầu ra
phù hợp với ít nhất một.

--đảo ngược-grep
Giới hạn đầu ra cam kết đối với những đầu ra có thông báo nhật ký không khớp với mẫu
được chỉ định bằng --grep = .

-i, --regexp-bỏ qua trường hợp
Khớp với các mẫu giới hạn biểu thức chính quy mà không liên quan đến chữ cái.

--basic-regrec
Coi các mẫu giới hạn là các biểu thức chính quy cơ bản; đây là mặc định.

-E, --extend-regrec
Hãy xem xét các mẫu giới hạn là các biểu thức chính quy mở rộng thay vì
các biểu thức chính quy cơ bản mặc định.

-F, --fixed-string
Hãy coi các mẫu giới hạn là các chuỗi cố định (không hiểu mẫu là
biểu hiện thông thường).

--perl-regrec
Hãy xem xét các mẫu giới hạn là các biểu thức chính quy tương thích với Perl. Đòi hỏi
libpcre sẽ được biên dịch trong.

- trống rỗng
Dừng lại khi một con đường nhất định biến mất khỏi cây.

--kết hợp
Chỉ in các cam kết hợp nhất. Điều này hoàn toàn giống với --min-parent = 2.

- không hợp nhất
Không in cam kết với nhiều hơn một phụ huynh. Điều này giống hệt như
--max-cha mẹ = 1.

--min-cha mẹ = , --max-cha mẹ = , - cha mẹ không tối thiểu, - cha mẹ không tối đa
Chỉ hiển thị các cam kết có ít nhất (hoặc nhiều nhất) mà nhiều phụ huynh cam kết. Trong
cụ thể, --max-parent = 1 giống với --no-merge, --min-parent = 2 giống với
--màu đen. --max-cha mẹ = 0 cho tất cả các cam kết gốc và --min-cha mẹ = 3 cho tất cả các con bạch tuộc
hợp nhất.

--no-min-cha mẹ và --no-max-cha mẹ đặt lại các giới hạn này (thành không giới hạn) một lần nữa.
Các dạng tương đương là --min-parent = 0 (bất kỳ cam kết nào có từ 0 bậc cha mẹ trở lên) và
--max-cha mẹ = -1 (số âm không biểu thị giới hạn trên).

- cha mẹ đầu tiên
Chỉ thực hiện theo cam kết mẹ đầu tiên khi thấy một cam kết hợp nhất. Tùy chọn này có thể cung cấp một
tổng quan tốt hơn khi xem sự phát triển của một nhánh chủ đề cụ thể, bởi vì
hợp nhất thành một nhánh chủ đề có xu hướng chỉ xoay quanh việc điều chỉnh để cập nhật ngược dòng từ
theo thời gian và tùy chọn này cho phép bạn bỏ qua các cam kết riêng lẻ mang lại
vào lịch sử của bạn bằng cách hợp nhất như vậy. Không thể kết hợp với --bisect.

--không phải
Đảo ngược ý nghĩa của ^ tiền tố (hoặc thiếu tiền tố đó) cho tất cả các bản sửa đổi sau
thông số kỹ thuật, cho đến - không phải tiếp theo.

--tất cả các
Giả vờ như thể tất cả các ref trong refs / được liệt kê trên dòng lệnh dưới dạng .

--braches [= ]
Giả vờ như thể tất cả các ref trong refs / heads được liệt kê trên dòng lệnh dưới dạng .
If được đưa ra, giới hạn các nhánh đối với những nhánh phù hợp với toàn cầu vỏ đã cho. Nếu mẫu
thiếu ?, *, hoặc là [, /* ở cuối là ngụ ý.

--tags [= ]
Giả vờ như thể tất cả các ref trong refs / tags được liệt kê trên dòng lệnh dưới dạng . Nếu
được cung cấp, giới hạn các thẻ cho những thẻ phù hợp với toàn cầu shell đã cho. Nếu thiếu mẫu ?,
*, hoặc là [, /* ở cuối là ngụ ý.

--remotes [= ]
Giả vờ như thể tất cả các lượt giới thiệu trong refs / remotes được liệt kê trên dòng lệnh dưới dạng .
If được cung cấp, giới hạn các nhánh theo dõi từ xa đối với những nhánh phù hợp với trình bao nhất định
quả cầu. Nếu thiếu mẫu ?, *, hoặc là [, /* ở cuối là ngụ ý.

--glob =
Giả vờ như thể tất cả các refs phù hợp với vỏ cầu được liệt kê trên
dòng lệnh như . Dẫn đầu refs /, sẽ tự động được thêm vào trước nếu thiếu. Nếu như
thiếu mẫu ?, *, hoặc là [, /* ở cuối là ngụ ý.

--exclude =
Không bao gồm đối sánh giới thiệu rằng - tất cả, - băng ghế, - thẻ,
--remotes hoặc --glob nếu không sẽ xem xét. Số lần lặp lại của tùy chọn này tích lũy
các mẫu loại trừ cho đến - tất cả, - băng ghế, --tags, --remotes hoặc --glob
tùy chọn (các tùy chọn hoặc đối số khác không xóa các mẫu tích lũy).

Các mẫu được đưa ra không nên bắt đầu bằng refs / heads, refs / tags, hoặc refs / remotes khi
được áp dụng cho --braches, --tags hoặc --remotes tương ứng và chúng phải bắt đầu bằng
refs / khi áp dụng cho --glob hoặc --all. Nếu một dấu vết /* được dự định, nó phải được đưa ra
một cách rõ ràng.

--reflog
Giả vờ như thể tất cả các đối tượng được đề cập bởi các bản ghi lại được liệt kê trên dòng lệnh như
.

- thiếu sót
Khi nhìn thấy tên đối tượng không hợp lệ trong đầu vào, hãy giả vờ như thể đầu vào không hợp lệ
được.

--chia đôi
Giả vờ như thể refs refs / bisect / bad bisection xấu được liệt kê và như thể nó là
tiếp theo là --not và phân giác tốt refs refs / bisect / good- * trên dòng lệnh.
Không thể kết hợp với --first-parent.

--stdin
Ngoài các được liệt kê trên dòng lệnh, hãy đọc chúng từ tiêu chuẩn
đầu vào. Nếu một -- dấu phân cách được nhìn thấy, dừng đọc các cam kết và bắt đầu đọc các đường dẫn đến
giới hạn kết quả.

- dấu chấm
Giống như --cherry-pick (xem bên dưới) nhưng đánh dấu các cam kết tương đương bằng = thay vì bỏ qua
chúng và những cái không tương đương với +.

--cherry-chọn
Bỏ qua bất kỳ cam kết nào đưa ra thay đổi tương tự như một cam kết khác ở "phía bên kia"
khi tập các cam kết bị giới hạn với hiệu số đối xứng.

Ví dụ: nếu bạn có hai nhánh, A và B, một cách thông thường để liệt kê tất cả các cam kết trên
chỉ một mặt của chúng là với --left-right (xem ví dụ bên dưới trong phần mô tả
của tùy chọn --left-right). Tuy nhiên, nó cho thấy cam kết đã được hái anh đào
từ nhánh khác (ví dụ, "thứ 3 trên b" có thể được hái từ nhánh A).
Với tùy chọn này, các cặp cam kết như vậy được loại trừ khỏi đầu ra.

- chỉ bên trái, - chỉ bên phải
Chỉ liệt kê các cam kết ở phía tương ứng của phạm vi đối xứng, tức là chỉ những cam kết
sẽ được đánh dấu <tương ứng. > bởi --left-right.

Ví dụ: --cherry-pick --right-only A ... B bỏ qua những cam kết từ B có trong
A hoặc là các bản vá tương đương với một cam kết trong A. Nói cách khác, điều này liệt kê các + cam kết
từ git cherry A B. Chính xác hơn, --cherry-pick --right-only --no-merge mang lại
danh sách chính xác.

--quả anh đào
Từ đồng nghĩa với - chỉ-phải --chính-dấu -không-hợp-nhất; hữu ích để giới hạn đầu ra ở
những cam kết từ phía chúng tôi và đánh dấu những cam kết đã được áp dụng cho phía bên kia của
lịch sử phân nhánh với git log --cherry ngược dòng ... mybranch, tương tự như git cherry
mybranch ngược dòng.

-g, --walk-reflogs
Thay vì đi bộ chuỗi tổ tiên cam kết, hãy đi bộ các mục nhập nhật ký lại từ gần đây nhất
một đến những cái cũ hơn. Khi tùy chọn này được sử dụng, bạn không thể chỉ định các cam kết để loại trừ
(đó là, ^ cam kết, cam kết1..cam kết2commit1 ... commit2 ký hiệu không thể được sử dụng).

Với định dạng --pretty khác với một dòng (vì những lý do rõ ràng), điều này gây ra kết quả
để có thêm hai dòng thông tin được lấy từ bản tóm tắt. Theo mặc định, commit @ {Nth}
ký hiệu được sử dụng trong đầu ra. Khi cam kết bắt đầu được chỉ định là commit @ {now},
đầu ra cũng sử dụng commit @ {timestamp} ký hiệu thay thế. Dưới --pretty = oneline,
thông báo cam kết được bắt đầu với thông tin này trên cùng một dòng. Tùy chọn này không thể
được kết hợp với --reverse. Xem thêm git-reflog(1).

- hợp nhất
Sau khi hợp nhất không thành công, hãy hiển thị các tham chiếu liên quan đến các tệp có xung đột và không tồn tại trên
tất cả các đầu để hợp nhất.

- ranh giới
Các cam kết ranh giới loại trừ đầu ra. Các cam kết ranh giới có tiền tố là -.

Lịch Sử đơn giản hóa
Đôi khi bạn chỉ quan tâm đến các phần của lịch sử, ví dụ: cam kết
sửa đổi một cụ thể . Nhưng có hai phần của Lịch Sử đơn giản hóa, một phần
là lựa chọn các cam kết và còn lại là cách thực hiện, vì có nhiều chiến lược khác nhau để
đơn giản hóa lịch sử.

Các tùy chọn sau đây chọn các cam kết sẽ được hiển thị:


Cam kết sửa đổi những gì đã cho được chọn.

--simplify-by-trang trí
Các cam kết được giới thiệu bởi một số chi nhánh hoặc thẻ được chọn.

Lưu ý rằng các cam kết bổ sung có thể được hiển thị để cung cấp một lịch sử có ý nghĩa.

Các tùy chọn sau ảnh hưởng đến cách đơn giản hóa được thực hiện:

Chế độ mặc định
Đơn giản hóa lịch sử thành lịch sử đơn giản nhất giải thích trạng thái cuối cùng của cây.
Đơn giản nhất vì nó cắt tỉa một số nhánh phụ nếu kết quả cuối cùng giống nhau (tức là
hợp nhất các nhánh có cùng nội dung)

- lịch sử đầy đủ
Giống như chế độ mặc định, nhưng không lược bỏ một số lịch sử.

--ngu độn
Chỉ những cam kết đã chọn mới được hiển thị, cộng với một số cam kết có lịch sử ý nghĩa.

- thô
Tất cả các cam kết trong lịch sử đơn giản hóa đều được hiển thị.

--simplify-merge
Tùy chọn bổ sung cho - toàn lịch sử để loại bỏ một số hợp nhất không cần thiết khỏi kết quả
lịch sử, vì không có cam kết nào được chọn đóng góp vào sự hợp nhất này.

- con đường tổ tiên
Khi được cung cấp một loạt các cam kết để hiển thị (ví dụ: cam kết1..cam kết2 or cam kết2 ^ commit1),
chỉ hiển thị các cam kết tồn tại trực tiếp trên chuỗi tổ tiên giữa cam kết1
cam kết2, tức là các cam kết đều là hậu duệ của cam kết1, và tổ tiên của cam kết2.

Sau đây là một lời giải thích chi tiết hơn.

Giả sử bạn đã chỉ định foo là . Chúng tôi sẽ gọi các cam kết sửa đổi foo! TREESAME,
và phần còn lại TREESAME. (Trong một khác biệt được lọc cho foo, chúng trông khác nhau và bằng nhau,
tương ứng.)

Trong phần sau, chúng tôi sẽ luôn tham khảo cùng một lịch sử ví dụ để minh họa
sự khác biệt giữa các cài đặt đơn giản hóa. Chúng tôi giả định rằng bạn đang lọc một tệp
foo trong biểu đồ cam kết này:

.-A --- M --- N --- O --- P --- Q
/ / / / / /
IBCDEY
\ / / / / /
`------------- 'X

Dòng lịch sử nằm ngang A --- Q được coi là dòng mẹ đầu tiên của mỗi lần hợp nhất. Các
cam kết là:

· Tôi là cam kết ban đầu, trong đó foo tồn tại với nội dung “asdf” và một tệp quux
tồn tại với nội dung "quux". Các cam kết ban đầu được so sánh với một cây trống, vì vậy tôi
! TREESAME.

· Trong A, foo chỉ chứa “foo”.

· B chứa cùng một thay đổi như A. Hợp nhất M của nó là nhỏ và do đó TREESAME cho tất cả
cha mẹ.

· C không thay đổi foo, nhưng hợp nhất N của nó thay đổi nó thành “foobar”, vì vậy nó không phải là TREESAME
cho bất kỳ phụ huynh nào.

· D đặt foo thành “baz”. Hợp nhất O của nó kết hợp các chuỗi từ N và D thành “foobarbaz”;
tức là, nó không phải là TREESAME đối với bất kỳ phụ huynh nào.

· E thay đổi quux thành “xyzzy”, và phép hợp nhất P của nó kết hợp các chuỗi thành “quux xyzzy”. P là
TREESAME thành O, nhưng không thành E.

· X là một cam kết gốc độc lập đã thêm một phía tệp mới và Y đã sửa đổi nó. Y là
TREESAME thành X. Hợp nhất Q của nó đã thêm mặt vào P và Q là TREESAME thành P, nhưng không thành Y.

danh sách sửa đổi quay ngược lại lịch sử, bao gồm hoặc loại trừ các cam kết dựa trên việc
--full-history và / hoặc viết lại của cha mẹ (thông qua - cha mẹ hoặc - con cái) được sử dụng. Các
các cài đặt sau có sẵn.

Chế độ mặc định
Các cam kết được bao gồm nếu chúng không phải là TREESAME đối với bất kỳ phụ huynh nào (mặc dù điều này có thể
đã thay đổi, hãy xem --trong phần bên dưới). Nếu cam kết là một hợp nhất và nó là TREESAME thành một
cha mẹ, chỉ theo dõi cha mẹ đó. (Ngay cả khi có một số cha mẹ TREESAME, hãy làm theo
chỉ một trong số họ.) Nếu không, hãy làm theo tất cả các bậc cha mẹ.

Kết quả này trong:

.-A --- N --- O
///
TÔI

Lưu ý cách quy tắc chỉ tuân theo TREESAME cha, nếu có, hãy loại bỏ B
khỏi xem xét hoàn toàn. C được xem xét thông qua N, nhưng là TREESAME. Cam kết gốc
được so sánh với một cái cây trống rỗng, vì vậy tôi là! TREESAME.

Quan hệ cha mẹ / con cái chỉ hiển thị với - cha mẹ, nhưng điều đó không ảnh hưởng đến
cam kết được chọn ở chế độ mặc định, vì vậy chúng tôi đã hiển thị các dòng chính.

- lịch sử đầy đủ mà không cần cha mẹ viết lại
Chế độ này khác với chế độ mặc định ở một điểm: luôn tuân theo tất cả các cha mẹ của một hợp nhất,
ngay cả khi nó là TREESAME cho một trong số họ. Ngay cả khi nhiều hơn một mặt của hợp nhất có
các cam kết được bao gồm, điều này không có nghĩa là bản thân hợp nhất là như vậy! bên trong
ví dụ, chúng tôi nhận được

IABNDOPQ

M bị loại vì nó là TREESAME đối với cả cha và mẹ. E, C và B đều đã đi bộ,
nhưng chỉ có B là! TREESAME, vì vậy những người khác không xuất hiện.

Lưu ý rằng nếu không có cha mẹ viết lại, không thực sự có thể nói về
mối quan hệ cha / con giữa các cam kết, vì vậy chúng tôi hiển thị chúng bị ngắt kết nối.

- lịch sử đầy đủ với sự viết lại của cha mẹ
Các cam kết thông thường chỉ được bao gồm nếu có! TREESAME (mặc dù điều này có thể được thay đổi,
xem --sparse bên dưới).

Hợp nhất luôn được bao gồm. Tuy nhiên, danh sách cha mẹ của họ được viết lại:
cha mẹ, cắt bỏ các cam kết không được bao gồm trong chính chúng. Kết quả này trong

.-A --- M --- N --- O --- P --- Q
/ / / / /
IB / D /
\ / / / /
`------------- '

So sánh với --full-history mà không cần viết lại ở trên. Lưu ý rằng E đã bị cắt bỏ bởi vì
nó là TREESAME, nhưng danh sách cha của P đã được viết lại để chứa cha của E. I.
điều tương tự cũng xảy ra với C và N, và X, Y và Q.

Ngoài các cài đặt trên, bạn có thể thay đổi liệu TREESAME có ảnh hưởng đến việc đưa vào hay không:

--ngu độn
Các cam kết được thực hiện được bao gồm nếu chúng không phải là TREESAME đối với bất kỳ phụ huynh nào.

- thô
Tất cả các cam kết được đi bộ đều được bao gồm.

Lưu ý rằng không có --full-history, điều này vẫn đơn giản hóa việc hợp nhất: nếu một trong các nhóm cha mẹ
là TREESAME, chúng tôi chỉ theo dõi cái đó, vì vậy các mặt khác của hợp nhất không bao giờ
đi bộ.

--simplify-merge
Trước tiên, hãy xây dựng một biểu đồ lịch sử theo cùng một cách - lịch sử đầy đủ bằng cách viết lại của cha mẹ
hiện (xem ở trên).

Sau đó, đơn giản hóa mỗi commit C thành C 'thay thế của nó trong lịch sử cuối cùng theo
các quy tắc sau:

· Đặt C 'thành C.

· Thay mỗi P cha của C 'bằng P' đơn giản hóa của nó. Trong quá trình này, thả
cha mẹ là tổ tiên của cha mẹ khác hoặc là gốc rễ cam kết TREESAME với
một cây trống và loại bỏ các bản sao, nhưng hãy cẩn thận để không bao giờ làm rơi tất cả các cây bố mẹ
chúng tôi là TREESAME để.

· Nếu sau khi viết lại gốc này, C 'là một cam kết gốc hoặc hợp nhất (có 1 hoặc> XNUMX
cha mẹ), một cam kết ranh giới, hoặc! TREESAME, nó vẫn còn. Nếu không, nó được thay thế
với cha mẹ duy nhất của nó.

Hiệu quả của điều này được thể hiện rõ nhất bằng cách so sánh với - toàn lịch sử với cha mẹ
viết lại. Ví dụ biến thành:

.-A --- M --- N --- O
///
IBD
\ / /
`` --------- '

Lưu ý sự khác biệt chính về N, P và Q qua - toàn bộ lịch sử:

· Tôi đã xóa danh sách cha của N vì nó là tổ tiên của cha mẹ khác M.
Tuy nhiên, N vẫn ở lại bởi vì nó là! TREESAME.

· Tương tự như vậy, danh sách cha của P đã bị tôi loại bỏ. P sau đó đã bị loại bỏ hoàn toàn, bởi vì
nó có một cha mẹ và là TREESAME.

· Danh sách mẹ của Q có Y được đơn giản hóa thành X. Sau đó X bị xóa, vì nó là một
Gốc TREESAME. Q sau đó đã bị xóa hoàn toàn, vì nó có một phụ huynh và
CÂY CÙNG.

Cuối cùng, có một chế độ đơn giản hóa thứ năm:

- con đường tổ tiên
Giới hạn các cam kết được hiển thị đối với những cam kết trực tiếp trên chuỗi tổ tiên giữa "từ"
và cam kết "to" trong phạm vi cam kết nhất định. Tức là chỉ hiển thị các cam kết
tổ tiên của cam kết “đến” và con cháu của cam kết “từ”.

Như một trường hợp sử dụng ví dụ, hãy xem xét lịch sử cam kết sau:

D --- E ------- F
/ \ \
B --- C --- G --- H --- I --- J
/ \
A ------- K --------------- L - M

Một thường xuyên Đ..M tính toán tập hợp các cam kết là tổ tiên của M, nhưng loại trừ
những người là tổ tiên của D. Điều này rất hữu ích để xem điều gì đã xảy ra với lịch sử
dẫn đến M kể từ D, theo nghĩa “cái gì M có mà không tồn tại trong D”.
Kết quả trong ví dụ này sẽ là tất cả các cam kết, ngoại trừ A và B (và chính D, của
khóa học).

Khi chúng tôi muốn tìm hiểu những cam kết nào trong M bị nhiễm lỗi do
D và cần sửa chữa, tuy nhiên, chúng tôi có thể chỉ muốn xem tập hợp con của Đ..M được
thực sự là con cháu của D, tức là loại trừ C và K. Đây chính xác là những gì
tùy chọn --ancestry-path không. Áp dụng cho Đ..M phạm vi, nó dẫn đến:

E ------- F
\ \
G --- H --- I --- J
\
L - M

Tùy chọn --simplify-by-trang trí cho phép bạn chỉ xem bức tranh lớn của
cấu trúc liên kết của lịch sử, bằng cách bỏ qua các cam kết không được tham chiếu bởi các thẻ. Cam kết là
được đánh dấu là! TREESAME (nói cách khác, được lưu giữ sau khi các quy tắc đơn giản hóa lịch sử được mô tả
ở trên) nếu (1) chúng được tham chiếu bởi các thẻ hoặc (2) chúng thay đổi nội dung của các đường dẫn
được đưa ra trên dòng lệnh. Tất cả các cam kết khác được đánh dấu là TREESAME (có thể
đơn giản hóa đi).

Cam kết Thứ tự
Theo mặc định, các cam kết được hiển thị theo thứ tự thời gian ngược lại.

--ngày đặt hàng
Không hiển thị cha mẹ trước khi tất cả các con của nó được hiển thị, nhưng nếu không thì hiển thị cam kết trong
thứ tự dấu thời gian cam kết.

--tác giả-ngày-thứ tự
Không hiển thị cha mẹ trước khi tất cả các con của nó được hiển thị, nhưng nếu không thì hiển thị cam kết trong
thứ tự dấu thời gian của tác giả.

--topo-thứ tự
Không hiển thị cha mẹ trước khi tất cả con cái của nó được hiển thị và tránh hiển thị cam kết trên
nhiều dòng lịch sử đan xen.

Ví dụ: trong lịch sử cam kết như thế này:

--- 1 ---- 2 ---- 4 ---- 7
\ \

3 ---- 5 ---- 6 ---- 8 ---
trong đó các con số biểu thị thứ tự của dấu thời gian cam kết, git rev-list và những người bạn với
--date-order hiển thị các cam kết theo thứ tự dấu thời gian: 8 7 6 5 4 3 2 1.

Với --topo-order, chúng sẽ hiển thị 8 6 5 3 7 4 2 1 (hoặc 8 7 4 2 6 5 3 1); một số già hơn
các cam kết được hiển thị trước các cam kết mới hơn để tránh hiển thị các cam kết từ hai
đường phát triển song song trộn lẫn với nhau.

--đảo ngược
Đưa ra các cam kết theo thứ tự ngược lại. Không thể kết hợp với --walk-reflogs.

Đối tượng Truyền tải
Các tùy chọn này chủ yếu được nhắm mục tiêu để đóng gói các kho lưu trữ Git.

--no-walk [= (đã sắp xếp | chưa sắp xếp)]
Chỉ hiển thị các cam kết đã cho, nhưng không vượt qua tổ tiên của họ. Điều này không có hiệu lực
nếu một phạm vi được chỉ định. Nếu đối số không được sắp xếp được đưa ra, các cam kết được hiển thị trong
thứ tự mà họ đã được đưa ra trên dòng lệnh. Ngược lại (nếu được sắp xếp hoặc không có đối số là
đưa ra), các cam kết được hiển thị theo thứ tự thời gian ngược lại theo thời gian cam kết. Không thể
kết hợp với --graph.

- đi bộ
Ghi đè - không đi bộ trước đó.

Cam kết Định dạng
--pretty [= ], --format =
In đẹp nội dung của nhật ký cam kết theo một định dạng nhất định, trong đó có thể
một trong một đường thẳng, ngắn, trung bình, Full, đầy đủ hơn, e-mail, nguyên, định dạng:
tformat:. Khi nào không phải là cái nào ở trên, và có % trình giữ chỗ trong đó, nó
hành động như thể --pretty = tformat: đã được đưa.

Xem phần "ĐỊNH DẠNG THUỘC TÍNH" để biết thêm một số chi tiết cho từng định dạng. Khi nào
= một phần bị bỏ qua, nó mặc định là trung bình.

Lưu ý: bạn có thể chỉ định định dạng đẹp mặc định trong cấu hình kho lưu trữ (xem
git-config(1)).

--abbrev-cam kết
Thay vì hiển thị tên đối tượng cam kết thập lục phân 40 byte đầy đủ, chỉ hiển thị một
tiền tố từng phần. Có thể chỉ định số chữ số không mặc định bằng "--abbrev = "
(điều này cũng sửa đổi đầu ra khác biệt, nếu nó được hiển thị).

Điều này sẽ làm cho "--pretty = oneline" dễ đọc hơn rất nhiều cho những người sử dụng
Thiết bị đầu cuối 80 cột.

--không viết tắtv-cam kết
Hiển thị tên đối tượng cam kết thập lục phân 40 byte đầy đủ. Điều này phủ định --abbrev-commit và
những tùy chọn ngụ ý nó chẳng hạn như "--oneline". Nó cũng ghi đè
log.abbrevCommit biến.

--một đường thẳng
Đây là cách viết tắt của "--pretty = oneline --abbrev-commit" được sử dụng cùng nhau.

--encoding =
Các đối tượng cam kết ghi lại mã hóa được sử dụng cho thông báo nhật ký trong mã hóa của chúng
tiêu đề; tùy chọn này có thể được sử dụng để yêu cầu lệnh mã lại thông báo nhật ký cam kết
trong bảng mã được người dùng ưa thích. Đối với các lệnh không liên quan đến hệ thống ống nước, điều này mặc định là
UTF-8. Lưu ý rằng nếu một đối tượng tuyên bố được mã hóa bằng X và chúng tôi đang xuất ra bằng X, chúng tôi
sẽ xuất nguyên văn đối tượng; điều này có nghĩa là các chuỗi không hợp lệ trong bản gốc
cam kết có thể được sao chép vào đầu ra.

--notes [= ]
Hiển thị các ghi chú (xem git-ghi chú(1)) chú thích cam kết, khi hiển thị cam kết
nhật ký tin nhắn. Đây là mặc định cho các lệnh git log, git show và git whatchanged
khi không có tùy chọn --pretty, --format hoặc --oneline được đưa ra trên dòng lệnh.

Theo mặc định, các ghi chú được hiển thị là từ các tham chiếu ghi chú được liệt kê trong lõi.notesRef
Notes.displayRef biến (hoặc ghi đè môi trường tương ứng). Nhìn thấy git-config(1)
để biết thêm chi tiết.

Với một tùy chọn đối số, hiển thị tham chiếu ghi chú này thay vì ghi chú mặc định
(các) tham chiếu. Ref chỉ định tên đầy đủ khi nó bắt đầu bằng refs / Notes /; khi nó
bắt đầu bằng ghi chú /, refs / và nếu không thì refs / ghi chú / là tiền tố để tạo thành tên đầy đủ của
giới thiệu

Nhiều tùy chọn --notes có thể được kết hợp để kiểm soát những ghi chú nào đang được hiển thị.
Ví dụ: "--notes = foo" sẽ chỉ hiển thị các ghi chú từ "refs / Notes / foo"; "--notes = foo
--notes "sẽ hiển thị cả ghi chú từ" refs / Notes / foo "và từ (các) ghi chú mặc định ref.

- không ghi chú
Không hiển thị ghi chú. Điều này phủ nhận tùy chọn --notes ở trên, bằng cách đặt lại danh sách
ghi chú refs mà từ đó ghi chú được hiển thị. Các tùy chọn được phân tích cú pháp theo thứ tự được đưa ra trên
dòng lệnh, vì vậy, ví dụ: "--notes --notes = foo --no-Notes --notes = bar" sẽ chỉ hiển thị
ghi chú từ "refs / note / bar".

--show-ghi chú [= ], - [no-] tiêu chuẩn-ghi chú
Các tùy chọn này không được dùng nữa. Thay vào đó, hãy sử dụng các tùy chọn --notes / - no-note ở trên.

--show-chữ ký
Kiểm tra tính hợp lệ của đối tượng cam kết đã ký bằng cách chuyển chữ ký tới gpg --verify
và hiển thị đầu ra.

- ngày tương đối
Từ đồng nghĩa với - ngày = tương đối.

--date =
Chỉ có hiệu lực đối với những ngày được hiển thị ở định dạng con người có thể đọc được, chẳng hạn như khi sử dụng
--khá. Biến cấu hình log.date đặt giá trị mặc định cho --date của lệnh log
lựa chọn. Theo mặc định, ngày tháng được hiển thị theo múi giờ ban đầu (hoặc của người cam kết hoặc
của tác giả). Nếu -local được thêm vào định dạng (ví dụ: iso-local), thì local của người dùng
múi giờ được sử dụng thay thế.

--date = tương đối hiển thị ngày liên quan đến thời gian hiện tại, ví dụ: "2 giờ trước". Các
-local tùy chọn không thể được sử dụng với --raw hoặc - tương quan.

--date = local là bí danh cho --date = default-local.

--date = iso (hoặc --date = iso8601) hiển thị dấu thời gian ở định dạng giống ISO 8601. Các
sự khác biệt với định dạng ISO 8601 nghiêm ngặt là:

· Một khoảng trắng thay vì dấu phân cách ngày / giờ T

· Khoảng cách giữa thời gian và múi giờ

· Không có dấu hai chấm giữa giờ và phút của múi giờ

--date = iso-nghiêm ngặt (hoặc --date = iso8601-nghiêm ngặt) hiển thị dấu thời gian trong ISO 8601 nghiêm ngặt
định dạng.

--date = rfc (hoặc --date = rfc2822) hiển thị dấu thời gian ở định dạng RFC 2822, thường thấy ở
tin nhắn email.

--date = short chỉ hiển thị ngày chứ không hiển thị thời gian ở định dạng YYYY-MM-DD.

--date = raw hiển thị ngày ở định dạng Git thô bên trong định dạng% s% z.

--date = format: ... cung cấp định dạng ... cho hệ thống strftime của bạn. Sử dụng --date = format:% c
để hiển thị ngày ở định dạng ưa thích của ngôn ngữ hệ thống của bạn. Xem hướng dẫn strftime cho
một danh sách đầy đủ các trình giữ chỗ định dạng. Khi sử dụng -local, cú pháp đúng là
--date = format-local: ...

--date = default là định dạng mặc định và tương tự như --date = rfc2822, với một số
ngoại lệ:

· Không có dấu phẩy sau ngày trong tuần

· Múi giờ bị bỏ qua khi múi giờ địa phương được sử dụng

--cha mẹ
Cũng in cha mẹ của cam kết (ở dạng "cha mẹ cam kết ..."). Cũng cho phép
cha mẹ viết lại, xem Lịch Sử đơn giản hóa phía dưới.

--bọn trẻ
Cũng in các phần tử con của cam kết (ở dạng "cam kết con ..."). Cũng cho phép
cha mẹ viết lại, xem Lịch Sử đơn giản hóa phía dưới.

--trái phải
Đánh dấu mặt nào của sự khác biệt đối xứng mà một cam kết có thể truy cập được. Cam kết từ bên trái
bên có tiền tố là <và bên phải với>. Nếu kết hợp với --boundary,
những cam kết đó có tiền tố là -.

Ví dụ: nếu bạn có cấu trúc liên kết này:

y --- b --- b nhánh B
/ \ /
/.
// \
o --- x --- a --- một nhánh A

bạn sẽ nhận được một đầu ra như thế này:

$ git rev-list --left-right --boundary --pretty = oneline A ... B

> bbbbbbb ... thứ 3 trên b
> bbbbbbb ... thứ 2 trên b
<aaaaaa...thứ 3 trên a
<aaaaaa...thứ 2 trên a
-yyyyyyy ... thứ nhất trên b
-xx ... ngày 1

- đồ thị
Vẽ biểu diễn đồ họa dựa trên văn bản của lịch sử cam kết ở phía bên trái
của đầu ra. Điều này có thể làm cho các dòng thừa được in giữa các cam kết, theo thứ tự
để lịch sử biểu đồ được vẽ chính xác. Không thể kết hợp với --no-walk.

Điều này cho phép cha mẹ viết lại, xem Lịch Sử đơn giản hóa phía dưới.

Điều này ngụ ý rằng tùy chọn --topo-order theo mặc định, nhưng tùy chọn --date-order cũng có thể
được chỉ định.

--show-linear-break [= ]
Khi --graph không được sử dụng, tất cả các nhánh lịch sử đều bị san phẳng, điều này có thể khiến bạn khó
thấy rằng hai cam kết liên tiếp không thuộc một nhánh tuyến tính. Tùy chọn này
đặt một rào cản giữa chúng trong trường hợp đó. Nếu như được chỉ định, nó là
chuỗi sẽ được hiển thị thay vì chuỗi mặc định.

Khác Định dạng
Dưới đây là các tùy chọn kiểm soát định dạng của đầu ra khác biệt. Một số trong số họ là
cụ thể để danh sách git-rev(1), tuy nhiên các tùy chọn khác có thể được đưa ra. Nhìn thấy git-khác-
các tập tin(1) để có thêm tùy chọn.

-c
Với tùy chọn này, đầu ra khác biệt cho một cam kết hợp nhất cho thấy sự khác biệt so với từng
bố mẹ cho kết quả hợp nhất đồng thời thay vì hiển thị sự khác biệt theo từng cặp
giữa cha mẹ và kết quả tại một thời điểm. Hơn nữa, nó chỉ liệt kê các tệp
đã được sửa đổi từ tất cả các bậc cha mẹ.

--cc
Cờ này ngụ ý tùy chọn -c và nén thêm đầu ra bản vá bằng cách bỏ qua
những người không thú vị có nội dung trong cha mẹ chỉ có hai biến thể và hợp nhất
kết quả chọn một trong số chúng mà không cần sửa đổi.

-m
Cờ này làm cho các cam kết hợp nhất hiển thị sự khác biệt đầy đủ như các cam kết thông thường; cho mỗi
hợp nhất cha mẹ, một mục nhập nhật ký riêng biệt và khác biệt được tạo. Một ngoại lệ là chỉ
khác với cha mẹ đầu tiên được hiển thị khi - tùy chọn cha mẹ đầu tiên được đưa ra; trong đó
trường hợp, đầu ra đại diện cho những thay đổi mà hợp nhất mang lại trong sau đó-hiện tại
chi nhánh.

-r
Hiển thị các khác biệt đệ quy.

-t
Hiển thị các đối tượng cây trong đầu ra khác nhau. Điều này ngụ ý -r.

ĐẸP M FORU ĐƠN


Nếu cam kết là hợp nhất và nếu định dạng đẹp thì không một đường thẳng, e-mail or nguyên, An
dòng bổ sung được chèn trước tác giả: hàng. Dòng này bắt đầu bằng "Merge:" và
các dấu cam kết của tổ tiên được in ra, phân tách bằng dấu cách. Lưu ý rằng danh sách
cam kết có thể không nhất thiết phải là danh sách của trực tiếp phụ huynh cam kết nếu bạn có giới hạn
quan điểm của bạn về lịch sử: ví dụ: nếu bạn chỉ quan tâm đến những thay đổi liên quan đến
thư mục hoặc tệp nhất định.

Có một số định dạng dựng sẵn và bạn có thể xác định các định dạng bổ sung bằng cách đặt
khá. tùy chọn cấu hình thành tên định dạng khác hoặc định dạng: chuỗi, như
được mô tả bên dưới (xem git-config(1)). Dưới đây là chi tiết về các định dạng cài sẵn:

· một đường thẳng



Điều này được thiết kế để nhỏ gọn nhất có thể.

· ngắn

làm
Tác giả:



· trung bình

làm
Tác giả:
Ngày:





· Full

làm
Tác giả:
Làm:





· đầy đủ hơn

làm
Tác giả:
Tác giả Ngày:
Làm:
Cuộc hẹn quan trọng:





· e-mail

Từ
Từ:
Ngày:
Chủ đề: [PATCH]



· nguyên

Sản phẩm nguyên định dạng hiển thị toàn bộ cam kết chính xác như được lưu trữ trong đối tượng cam kết.
Đáng chú ý, SHA-1 được hiển thị đầy đủ, bất kể --abbrev hay
- không viết tắt được sử dụng, và cha mẹ thông tin hiển thị cam kết thực sự của cha mẹ, không có
có tính đến việc ghép hoặc đơn giản hóa lịch sử. Lưu ý rằng định dạng này ảnh hưởng đến
cách các cam kết được hiển thị, nhưng không phải cách hiển thị khác biệt, ví dụ như với git log
--raw. Để lấy tên đối tượng đầy đủ ở định dạng khác biệt thô, hãy sử dụng - không viết tắt.

· định dạng:

Sản phẩm định dạng: định dạng cho phép bạn chỉ định thông tin bạn muốn hiển thị.
Nó hoạt động hơi giống định dạng printf, với ngoại lệ đáng chú ý là bạn nhận được
dòng mới với %n thay vì \n.

Ví dụ, định dạng: " tác giả of %h %một, % ar% nThe tiêu đề >>% s <<% n " Sẽ hiển thị
đại loại như thế này:

Tác giả của fe6e0ee là Junio ​​C Hamano, 23 giờ trước
Tiêu đề là >> t4119: thử nghiệm máy tính tự động -p cho đầu vào khác biệt truyền thống. <

Các trình giữ chỗ là:

· %H: cam kết băm

· %h: viết tắt commit hash

· %T: băm cây

· %t: băm cây viết tắt

· %P: dấu ngoặc đơn

· %p: dấu ngoặc đơn viết tắt

· %một: tên tác giả

· %một: tên tác giả (tôn trọng .mailmap, xem git-shortlog(1) hoặc git-blu(1))

· % ae: email tác giả

· % aE: email tác giả (tôn trọng .mailmap, xem git-shortlog(1) hoặc git-blu(1))

· % quảng cáo: ngày tác giả (định dạng tôn trọng - ngày = tùy chọn)

· % aD: ngày của tác giả, kiểu RFC2822

· % ar: ngày tác giả, người thân

· %tại: ngày tác giả, dấu thời gian UNIX

· % ai: ngày của tác giả, định dạng giống ISO 8601

· % aI: ngày của tác giả, định dạng ISO 8601 nghiêm ngặt

· % cn: tên người cam kết

· % cN: tên người cam kết (tôn trọng .mailmap, xem git-shortlog(1) hoặc git-blu(1))

· % ce: email người cam kết

· % cE: email cam kết (tôn trọng .mailmap, xem git-shortlog(1) hoặc git-blu(1))

· %đĩa CD: ngày cam kết (tôn trọng định dạng - ngày = tùy chọn)

· %đĩa CD: ngày cam kết, kiểu RFC2822

· % cr: ngày cam kết, họ hàng

· % ct: ngày cam kết, dấu thời gian UNIX

· % ci: ngày cam kết, định dạng giống ISO 8601

· % cI: ngày cam kết, định dạng ISO 8601 nghiêm ngặt

· %d: tên giới thiệu, như tùy chọn - trang trí của nhật ký git(1)

· %D: các tên ref không có "(", ")".

· %e: mã hóa

· %s: chủ thể

· %f: dòng chủ đề sanitized, phù hợp với tên tệp

· %b: cơ thể người

· %B: raw body (chủ thể và cơ thể chưa được bao bọc)

· %N: ghi chú cam kết

· % GG: thông báo xác minh thô từ GPG cho một cam kết đã ký

· %NS?: hiển thị "G" cho chữ ký Tốt, "B" cho chữ ký xấu, "U" cho chữ ký tốt,
chữ ký không đáng tin cậy và "N" không có chữ ký

· % GS: hiển thị tên của người ký cho một cam kết đã ký

· % GK: hiển thị khóa được sử dụng để ký cam kết đã ký

· % gD: bộ chọn reflog, ví dụ: refs / stash @ {1}

· % gd: bộ chọn reflog rút gọn, ví dụ: stash @ {1}

· % gn: tên nhận dạng reflog

· % gN: tên nhận dạng reflog (tôn trọng .mailmap, xem git-shortlog(1) hoặc git-
đổ lỗi cho(1))

· % ge: email nhận dạng reflog

· % gE: reflog email nhận dạng (tôn trọng .mailmap, xem git-shortlog(1) hoặc git-
đổ lỗi cho(1))

· % gs: chủ đề reflog

· % Được tín dụng: chuyển màu sang đỏ

· % Cgreen: chuyển màu sang xanh lục

· % Cblue: chuyển màu sang xanh lam

· % Creset: đặt lại màu

· %NS(...): đặc điểm kỹ thuật màu, như được mô tả trong tùy chọn color.branch. * config; thêm vào
tự động, lúc đầu sẽ chỉ phát ra màu khi màu được bật cho đầu ra nhật ký
(theo color.diff, color.ui, hoặc --color và tôn trọng cài đặt tự động của
trước đây nếu chúng ta đang đi đến một thiết bị đầu cuối). tự động một mình (tức là% C (tự động)) sẽ bật
tự động tô màu trên các chỗ dành sẵn tiếp theo cho đến khi màu được chuyển lại.

· %m: trái, phải hoặc ranh giới

· %n: dòng mới

· %%: một nguyên liệu %

· % x00: in một byte từ mã hex

· % w ([ [, [, ]]]): chuyển đổi gói dòng, như tùy chọn -w của git-
viết tắt(1).

· % <( [, trunc | ltrunc | mtrunc]): làm cho trình giữ chỗ tiếp theo chiếm ít nhất N cột,
khoảng cách đệm ở bên phải nếu cần thiết. Tùy ý cắt bớt ở phần đầu
(ltrunc), giữa (mtrunc) hoặc cuối (trunc) nếu đầu ra dài hơn N
cột. Lưu ý rằng việc cắt ngắn chỉ hoạt động chính xác với N> = 2.

· % <| ( ): làm cho trình giữ chỗ tiếp theo chiếm ít nhất cho đến cột thứ N, phần đệm
khoảng trống ở bên phải nếu cần thiết

· %> ( ), %> | ( ): tương tự như % <( ), % <| ( ) tương ứng, nhưng khoảng cách đệm
bên trái

· % >> ( ), % >> | ( ): tương tự như %> ( ), %> | ( ) tương ứng, ngoại trừ điều đó nếu
trình giữ chỗ tiếp theo chiếm nhiều khoảng trắng hơn số lượng đã cho và có khoảng trắng ở bên trái,
sử dụng những không gian đó

· %> <( ), %> <| ( ): tương tự như % <( ), % <| ( ) tương ứng, nhưng đệm cả hai
các bên (nghĩa là văn bản được căn giữa)

Chú thích
Một số trình giữ chỗ có thể phụ thuộc vào các tùy chọn khác được cung cấp cho công cụ truyền tải bản sửa đổi.
Ví dụ: tùy chọn% g * reflog sẽ chèn một chuỗi trống trừ khi chúng ta
duyệt qua các mục nhập reflog (ví dụ: bằng git log -g). Phần giữ chỗ% d và% D sẽ sử dụng
định dạng trang trí "ngắn" nếu - trang trí chưa được cung cấp trên lệnh
hàng.

Nếu bạn thêm dấu + (dấu cộng) vào sau % của một trình giữ chỗ, một nguồn cấp dữ liệu dòng được chèn ngay lập tức
trước khi mở rộng nếu và chỉ khi trình giữ chỗ mở rộng thành một chuỗi không trống.

Nếu bạn thêm dấu - (dấu trừ) sau % của một trình giữ chỗ, các nguồn cấp dữ liệu dòng ngay trước
phần mở rộng bị xóa nếu và chỉ khi trình giữ chỗ mở rộng thành một chuỗi trống.

Nếu bạn thêm dấu `` (khoảng trắng) sau % của một trình giữ chỗ, một khoảng trắng được chèn ngay trước
mở rộng nếu và chỉ khi trình giữ chỗ mở rộng thành một chuỗi không trống.

· định dạng:

Sản phẩm định dạng: định dạng hoạt động giống hệt như định dạng:, ngoại trừ việc nó cung cấp "terminator"
ngữ nghĩa thay vì ngữ nghĩa "dấu phân cách". Nói cách khác, mỗi cam kết có
ký tự kết thúc tin nhắn (thường là một dòng mới) được thêm vào, thay vì một dấu phân cách
được đặt giữa các mục. Điều này có nghĩa là mục nhập cuối cùng của định dạng một dòng sẽ
được kết thúc đúng cách bằng một dòng mới, giống như định dạng "một dòng". Vì
thí dụ:

$ git log -2 --pretty = format:% h 4da45bef \
| perl -pe '$ _. = "- KHÔNG CÓ NEWLINE \ n" trừ khi / \ n /'
4da45be
7134973 - KHÔNG CÓ NEWLINE

$ git log -2 --pretty = tformat:% h 4da45bef \
| perl -pe '$ _. = "- KHÔNG CÓ NEWLINE \ n" trừ khi / \ n /'
4da45be
7134973

Ngoài ra, bất kỳ chuỗi không được nhận dạng nào có% trong đó được hiểu như thể nó có
tformat: ở phía trước nó. Ví dụ: hai cái này tương đương nhau:

$ git log -2 --pretty = tformat:% h 4da45bef
$ git log -2 --pretty =% h 4da45bef

CHUNG KHÁC BIỆT 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ô
Đối với mỗi cam kết, hãy hiển thị tóm tắt các thay đổi bằng cách sử dụng định dạng khác biệt thô. Xem phần "RAW
ĐỊNH DẠNG ĐẦU RA "của git-khác biệt(1). Điều này khác với việc hiển thị bản thân nhật ký
ở định dạng thô mà bạn có thể đạt được với --format = raw.

--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
Tách các cam kết bằng NULs thay vì bằng các dòng mới.

Ngoài ra, khi --raw hoặc --numstat đã được cung cấp, không trộn lẫn tên đường dẫn và sử dụng NUL như
đầu ra trường đầu cuối.

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 [= ]
Nếu tạo ra các khác biệt, hãy phát hiện và báo cáo đổi tên cho từng cam kết. Đối với các tệp sau
đổi tên trong khi xem qua lịch sử, hãy xem --follow. Nếu n được chỉ định, nó là một
ngưỡng về chỉ số tương tự (tức là số lượng thêm / bớt so với
kích thước của tệp). Ví dụ: -M90% có nghĩa là Git nên coi một cặp xóa / thêm là một
đổi tên nếu hơn 90% tệp không thay đổi. Nếu không có dấu%, con số là
đượ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à là
do đó giống như -50%. Tương tự, -M05 giống với -M5%. Để giới hạn sự phát hiện đối với
đổi tên chính xác, 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);
hữu ích. Cảm ơn !
- 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.

--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).

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ọ").

VÍ DỤ


git log - không hợp nhất
Hiển thị toàn bộ lịch sử cam kết, nhưng bỏ qua bất kỳ hợp nhất nào

git log v2.6.12 .. bao gồm / scsi trình điều khiển / scsi
Hiển thị tất cả các cam kết kể từ phiên bản v2.6.12 đã thay đổi bất kỳ tệp nào trong bao gồm / scsi hoặc
thư mục con driver / scsi

git log --since = "2 tuần trước" - gitk
Hiển thị các thay đổi trong hai tuần qua vào tệp gitk. Dấu “-” là cần thiết để
tránh nhầm lẫn với địa điể̀m chọn lựa tên gitk

git log --name-status phát hành..test
Hiển thị các cam kết nằm trong nhánh "thử nghiệm" nhưng chưa có trong nhánh "phát hành",
cùng với danh sách các đường dẫn mà mỗi cam kết sửa đổi.

git log --follow builtin / rev-list.c
Hiển thị các cam kết đã thay đổi nội trang / rev-list.c, bao gồm cả những cam kết đó
xảy ra trước khi tệp được đặt tên hiện tại.

git log --braches --not --remotes = origin
Hiển thị tất cả các cam kết nằm trong bất kỳ chi nhánh địa phương nào nhưng không thuộc bất kỳ theo dõi từ xa nào
chi nhánh cho nguồn gốc (cái mà bạn có nguồn gốc thì không).

git log master --not --remotes = * / master
Hiển thị tất cả các cam kết nằm trong bản gốc cục bộ nhưng không có trong bất kỳ bản chính kho lưu trữ từ xa nào
chi nhánh.

git log -p -m --first-parent
Hiển thị lịch sử bao gồm các khác biệt về thay đổi, nhưng chỉ từ góc độ "nhánh chính",
bỏ qua các cam kết đến từ các nhánh đã hợp nhất và hiển thị đầy đủ các thay đổi khác nhau
được giới thiệu bởi các hợp nhất. Điều này chỉ có ý nghĩa khi tuân theo một chính sách nghiêm ngặt về
hợp nhất tất cả các nhánh chủ đề khi ở trên một nhánh tích hợp duy nhất.

git log -L '/ int main /', / ^} /: main.c
Cho biết hàm main () trong tệp main.c đã phát triển như thế nào theo thời gian.

nhật ký git -3
Giới hạn số lần cam kết hiển thị là 3.

THẢO LUẬN


Git ở một mức độ nào đó là mã hóa ký tự bất khả tri.

· Nội dung của các đối tượng blob là các chuỗi byte không được diễn giải. Không có
mã hóa bản dịch ở cấp độ cốt lõi.

· Tên đường dẫn được mã hóa ở dạng chuẩn hóa UTF-8 C. Điều này áp dụng cho các đối tượng cây,
tệp chỉ mục, tên tham chiếu, cũng như tên đường dẫn trong đối số dòng lệnh,
biến môi trường và tệp cấu hình (.git / config (xem git-config(số 1)), gitignore(5)
gitattribut(5) mô-đun git(5)).

Lưu ý rằng Git ở cấp lõi xử lý tên đường dẫn đơn giản là chuỗi không phải NUL
byte, không có chuyển đổi mã hóa tên đường dẫn (ngoại trừ trên Mac và Windows).
Do đó, việc sử dụng các tên đường dẫn không phải ASCII hầu như sẽ hoạt động ngay cả trên các nền tảng và tệp
hệ thống sử dụng mã hóa ASCII mở rộng kế thừa. Tuy nhiên, kho lưu trữ được tạo trên
các hệ thống như vậy sẽ không hoạt động bình thường trên các hệ thống dựa trên UTF-8 (ví dụ: Linux, Mac, Windows)
và ngược lại. Ngoài ra, nhiều công cụ dựa trên Git chỉ đơn giản giả sử tên đường dẫn là
UTF-8 và sẽ không hiển thị chính xác các bảng mã khác.

· Thông báo nhật ký cam kết thường được mã hóa bằng UTF-8, nhưng các mã hóa ASCII mở rộng khác
cũng được hỗ trợ. Điều này bao gồm ISO-8859-x, CP125x và nhiều thứ khác, nhưng không
Bảng mã đa byte UTF-16/32, EBCDIC và CJK (GBK, Shift-JIS, Big5, EUC-x, CP9xx
vv).

Mặc dù chúng tôi khuyến khích rằng các thông báo nhật ký cam kết được mã hóa bằng UTF-8, cả lõi và
Git Sứ được thiết kế để không ép UTF-8 trong các dự án. Nếu tất cả những người tham gia
dự án cụ thể cảm thấy thuận tiện hơn khi sử dụng các mã hóa kế thừa, Git không cấm
nó. Tuy nhiên, có một số điều cần lưu ý.

1. git cam kếtgit cây cam kết đưa ra cảnh báo nếu thông báo nhật ký cam kết được cung cấp cho nó
trông không giống như một chuỗi UTF-8 hợp lệ, trừ khi bạn nói rõ ràng rằng dự án của bạn sử dụng
mã hóa kế thừa. Cách để nói điều này là có i18n.commitencoding trong .git / config
tệp, như thế này:

[i18n]
mã hóa cam kết = ISO-8859-1

Các đối tượng commit được tạo với cài đặt trên ghi lại giá trị của i18n.commitencoding
trong tiêu đề mã hóa của nó. Điều này là để giúp những người khác nhìn vào họ sau này. Thiếu
tiêu đề này ngụ ý rằng thông báo nhật ký cam kết được mã hóa bằng UTF-8.

2. git đăng nhập, git hiển thị, git đổ lỗi cho và bạn bè nhìn vào tiêu đề mã hóa của một cam kết
và cố gắng mã lại thông báo nhật ký thành UTF-8 trừ khi được chỉ định khác. Bạn
có thể chỉ định mã hóa đầu ra mong muốn với i18n.logoutputencoding trong .git / config
tệp, như thế này:

[i18n]
mã hóa đăng xuất = ISO-8859-1

Nếu bạn không có biến cấu hình này, giá trị của i18n.commitencoding là
được sử dụng thay thế.

Lưu ý rằng chúng tôi đã cố tình chọn không mã lại thông báo nhật ký cam kết khi một cam kết là
được thực hiện để buộc UTF-8 ở cấp đối tượng cam kết, vì mã hóa lại thành UTF-8 không
nhất thiết phải là một hoạt động có thể đảo ngược.

CẤU HÌNH


Xem git-config(1) cho các biến cốt lõi và git-khác biệt(1) cho các cài đặt liên quan đến khác biệt
thế hệ.

định dạng.pretty
Mặc định cho tùy chọn --format. (Nhìn thấy Khá Định dạng ở trên.) Mặc định là trung bình.

i18n.logOutputEncoding
Mã hóa để sử dụng khi hiển thị nhật ký. (Nhìn thấy Thảo luận ở trên.) Mặc định là giá trị của
i18n.commitEncoding nếu được đặt và UTF-8 nếu không.

log.date
Định dạng mặc định cho các ngày có thể đọc được của con người. (So ​​sánh tùy chọn --date.) Mặc định là
"default", có nghĩa là viết các ngày như Thứ Bảy ngày 8 tháng 19 35:34:2010 0500 -XNUMX.

log.follow
Nếu đúng, git log sẽ hoạt động như thể tùy chọn --follow được sử dụng khi một Là
được. Điều này có những hạn chế tương tự như --follow, tức là nó không thể được sử dụng để theo dõi
nhiều tệp và không hoạt động tốt trên lịch sử phi tuyến tính.

log.showRoot
Nếu sai, git log và các lệnh liên quan sẽ không coi cam kết ban đầu là một
sự kiện tạo. Mọi cam kết gốc trong đầu ra git log -p sẽ được hiển thị mà không có sự khác biệt
đính kèm. Mặc định là đúng.

bản đồ thư. *
Xem git-shortlog(1).

Notes.displayRef
Tham chiếu nào, ngoài bộ mặc định của core.notesRef hoặc GIT_NOTES_REF, đọc
ghi chú từ khi hiển thị thông báo cam kết với họ lệnh trong nhật ký. Nhìn thấy git-
ghi chú(1).

Có thể là tên tham chiếu không viết tắt hoặc tên toàn cầu và có thể được chỉ định nhiều lần. MỘT
cảnh báo sẽ được đưa ra cho các giới thiệu không tồn tại, nhưng một giới thiệu không khớp với bất kỳ
refs bị bỏ qua một cách im lặng.

Có thể tắt cài đặt này bằng tùy chọn - không ghi chú, bị ghi đè bởi
GIT_NOTES_DISPLAY_REF biến môi trường và bị ghi đè bởi --notes =
tùy chọn.

GIT


Một phần của git(1) bộ

Sử dụng git-log trực tuyến bằng các dịch vụ onworks.net


Máy chủ & Máy trạm miễn phí

Tải xuống ứng dụng Windows & Linux

  • 1
    AstrOrzNgười Chơi
    AstrOrzNgười Chơi
    AstrOrz Player là trình phát đa phương tiện miễn phí
    phần mềm, một phần dựa trên WMP và VLC. Các
    người chơi theo phong cách tối giản, với
    hơn mười màu chủ đề và cũng có thể
    b ...
    Tải xuống AstrOrzPlayer
  • 2
    phim trường
    phim trường
    Kodi Movistar+ TV là một ADDON cho XBMC/
    Kodi que allowe disponer de un
    bộ giải mã dịch vụ IPTV
    Tích hợp Movistar en uno de los
    trung tâm truyền thông ...
    Tải phimstartv
  • 3
    Mã :: Khối
    Mã :: Khối
    Code::Blocks là mã nguồn mở, miễn phí,
    đa nền tảng C, C++ và Fortran IDE
    được xây dựng để đáp ứng những nhu cầu khắt khe nhất
    của người dùng của nó. Nó được thiết kế rất
    mở rộng ...
    Tải xuống mã::Khối
  • 4
    Ở giữa
    Ở giữa
    Giao diện Minecraft giữa hoặc nâng cao
    và Theo dõi Dữ liệu / Cấu trúc là một công cụ để
    hiển thị tổng quan về Minecraft
    thế giới mà không thực sự tạo ra nó. Nó
    có thể ...
    Tải về giữa
  • 5
    MSYS2
    MSYS2
    MSYS2 là một tập hợp các công cụ và
    thư viện cung cấp cho bạn một
    môi trường dễ sử dụng để xây dựng,
    cài đặt và chạy Windows gốc
    phần mềm. Nó lừa ...
    Tải xuống MSYS2
  • 6
    libjpeg-turbo
    libjpeg-turbo
    libjpeg-turbo là codec hình ảnh JPEG
    sử dụng hướng dẫn SIMD (MMX, SSE2,
    NEON, AltiVec) để tăng tốc đường cơ sở
    Bật nén và giải nén JPEG
    x86, x8 ...
    Tải xuống libjpeg-turbo
  • Khác »

Lệnh Linux

Ad