Nếu bạn muốn chắc chắn bản vá (cam kết đơn) sẽ được áp dụng trên đầu trang của một cam kết cụ thể, bạn có thể sử dụng tùy chọn git 2.9 mới (tháng 6 năm 2016) git format-patch --base
git format-patch --base=COMMIT_VALUE~ -M -C COMMIT_VALUE~..COMMIT_VALUE
# or
git format-patch --base=auto -M -C COMMIT_VALUE~..COMMIT_VALUE
# or
git config format.useAutoBase true
git format-patch -M -C COMMIT_VALUE~..COMMIT_VALUE
Xem cam kết bb52995 , cam kết 3de6651 , cam kết fa2ab86 , cam kết dep2c09 (ngày 26 tháng 4 năm 2016) của Xiaolong Ye (``) .
(Được hợp nhất bởi Junio C Hamano - gitster
- trong cam kết 72ce3ff , ngày 23 tháng 5 năm 2016)
format-patch
: thêm --base
tùy chọn '' để ghi thông tin cây cơ sở
Người bảo trì hoặc người kiểm tra bên thứ ba có thể muốn biết chính xác cây cơ sở mà loạt bản vá áp dụng. Dạy định dạng git-patch a '--base
tùy chọn '' để ghi thông tin cây cơ sở và nối nó vào cuối tin nhắn đầu tiên (có thể là thư xin việc hoặc bản vá đầu tiên trong chuỗi).
Thông tin cây cơ sở bao gồm "cam kết cơ sở", là một cam kết nổi tiếng là một phần của phần ổn định của lịch sử dự án mà mọi người khác làm việc và không có hoặc nhiều "bản vá tiên quyết", nổi tiếng các bản vá trong chuyến bay chưa phải là một phần của "cam kết cơ sở" cần được áp dụng trên đầu trang của "cam kết cơ sở" theo thứ tự tôpô trước khi các bản vá có thể được áp dụng.
"Cam kết cơ sở" được hiển thị là " base-commit:
" theo sau là 40-hex của tên đối tượng cam kết.
Một "bản vá tiên quyết" được hiển thị là " prerequisite-patch-id:
" theo sau là "id patch" 40-hex, có thể thu được bằng cách chuyển bản vá thông qua git patch-id --stable
lệnh "".
Git 2.23 (Q3 2019) sẽ cải thiện điều đó, bởi vì --base
tùy chọn "" của " format-patch
" đã tính toán các patch-ids
bản vá tiên quyết theo cách không ổn định, đã được cập nhật để tính toán theo cách tương thích với " git patch-id --stable
".
Xem cam kết a8f6855 , cam kết 6f93d26 (26 tháng 4 năm 2019) của Stephen Boyd ( akshayka
) .
(Được hợp nhất bởi Junio C Hamano - gitster
- trong cam kết 8202d12 , ngày 13 tháng 6 năm 2019)
format-patch
: làm cho --base patch-id
đầu ra ổn định
Chúng tôi không xóa bối cảnh mỗi khi chúng tôi xử lý một
patch-id
đoạn mã trong mã thế hệ diff.c
, nhưng chúng tôi đã làm điều đó khi chúng tôi tạo ra các bản vá lỗi "ổn định" bằng patch-id
công cụ ''.
Chúng ta hãy chuyển logic tương tự từ đó patch-id.c
sang diff.c
để chúng ta có thể có cùng hàm băm khi chúng ta tạo id-patch cho format-patch --base=
các loại lệnh ''.
Trước Git 2.24 (Q4 2019), " git format-patch -o <outdir>
" đã làm tương đương với " mkdir <outdir>
" không " mkdir -p <outdir>
", điều này đang được sửa chữa.
Xem cam kết edefc31 (ngày 11 tháng 10 năm 2019) của Bert Wesarg ( bertwesarg
) .
(Được hợp nhất bởi Junio C Hamano - gitster
- trong cam kết F1afbb0 , ngày 18 tháng 10 năm 2019)
format-patch
: tạo các thành phần hàng đầu của thư mục đầu ra
Đã ký tắt: Bert Wesarg
'git format-patch -o' đã tương đương với 'mkdir' chứ không phải 'mkdir -p', đang được sửa.
Tránh sử dụng ' adjust_shared_perm
' trên các thư mục hàng đầu có thể có ý nghĩa bảo mật. Đạt được bằng cách tạm thời vô hiệu hóa ' config.sharedRepository
' like ' git init
'.
Với Git 2.25 (Q1 2020), " git rebase
" không hoạt động tốt khi format.useAutoBase
biến cấu hình được đặt, đã được sửa.
Xem cam kết cae0bc0 , cam kết 945dc55 , cam kết 700e006 , cam kết a749d01 , cam kết 0c47e06 (04 tháng 12 năm 2019) của Denton Liu ( Denton-L
) .
(Được hợp nhất bởi Junio C Hamano - gitster
- trong cam kết 71a7de7 , ngày 16 tháng 12 năm 2019)
rebase
: Sửa chữa format.useAutoBase
vỡ
Báo cáo: Christian Biesinger
Đã ký: Denton Liu
Với format.useAutoBase = true
, chạy rebase dẫn đến một lỗi:
fatal: failed to get upstream, if you want to record base commit automatically,
please use git branch --set-upstream-to to track a remote branch.
Or you could specify base commit by --base=<base-commit-id> manually
error:
git encountered an error while preparing the patches to replay
these revisions:
ede2467cdedc63784887b587a61c36b7850ebfac..d8f581194799ae29bf5fa72a98cbae98a1198b12
As a result, git cannot rebase them.
Khắc phục sự cố này bằng cách luôn chuyển --no-base
sang bản vá định dạng từ rebase để hiệu ứng format.useAutoBase
bị phủ nhận.
git apply --stat file.patch
# hiển thị số liệu thống kê.git apply --check file.patch
# kiểm tra lỗi trước khi áp dụng.git am < file.patch
# áp dụng bản vá cuối cùng.