Như lỗi hợp nhất hoặc lỗi cơ sở lại. Nó có một mã lỗi duy nhất không?
Câu trả lời:
Tôi đã thiết lập một bài kiểm tra để thất bại. Đây là những gì tôi nhận được:
$ git merge newbranch
Auto-merging test.txt
CONFLICT (content): Merge conflict in test.txt
Automatic merge failed; fix conflicts and then commit the result.
$ echo $?
1
Git trả về 0
khi nó kết hợp chính xác, như mong đợi.
&&
; đó là cách các thử nghiệm của họ được triển khai.
git rebase
cùng một hành vi?
Trong ngắn hạn, không. Bạn sẽ thấy mã thoát 1 cho các lỗi và 0 cho thành công.
Từ việc phân tích nhanh nguồn, có một số mã 127 và 128 được mong đợi cho các mục đích cụ thể của chúng (không tìm thấy lệnh, lỗi đã được báo cáo) và một số mã bất thường ở một vài chỗ, nhưng đối với lỗi chạy máy, đó là tất cả exit(1)
.
man
trang của họ để biết chi tiết.
Chạy git status
trên repo không phải git trả về 128, không phải 1, điều này rất hữu ích trong việc nhanh chóng xác định xem repo git có tồn tại hay không.
Lỗi 128, không có thông báo lỗi từ git, có thể là lỗi chung cho "sự cố không mong muốn".
Tôi nhận được điều này trên các hoạt động cần sửa đổi tệp dưới .git (ví dụ: " git checkout -- myfile
" để hoàn nguyên tệp đã sửa đổi) bởi một người dùng khác. (Trong trường hợp của tôi " chmod -R og+w .git
" đã sửa nó; tự nhiên, đừng làm vậy trừ khi bạn hiểu các tác động bảo mật đối với trường hợp của mình!)
git push --delete origin a_remote_tag_name
Điều này trả về 256 nếu thẻ không tồn tại bằng cách sử dụng phiên bản git 1.8.3.1
Sẽ rất tuyệt nếu có một danh sách tổng hợp các mã trả lại cụ thể được trả về bởi mỗi lệnh và những gì chúng chỉ ra. Điều này cũng có thể giúp ngăn việc thay đổi ý nghĩa mã trả về (mà các tập lệnh tự động hóa có thể dựa vào).
Git 2.24 (Q4 2019) minh họa cách git
các lệnh trả về mã.
Xem cam kết 50094ca , cam kết c1a6f21 , cam kết 854b5cb , cam kết dd2b6b6 , cam kết 6bd26f5 , cam kết c6ec6da , cam kết f2e2fa8 , cam kết 460609c , cam kết 92014b6 , cam kết 0ab74e9 , cam kết cb46c40 , cam kết b562a54 (ngày 27 tháng 8 năm 2019) và cam kết ngày 20 tháng 8 năm 2019 bởi Denton Liu ( Denton-L
) .
(Được hợp nhất bởi Junio C Hamano - gitster
- trong cam kết 1c6fc94 , ngày 30 tháng 9 năm 2019)
t4014: ngừng mất mã trả về của lệnh git
Hiện tại, có hai cách khiến mã trả về của lệnh Git bị mất.
Cách đầu tiên là khi một lệnh ở phía trên của một đường ống. Trong một đường ống, chỉ mã trả về của lệnh cuối cùng được sử dụng. Vì vậy, tất cả các lệnh khác sẽ có mã trả lại của chúng bị che.
Viết lại các đường ống để không có lệnh Git ngược dòng.Một cách khác là khi một lệnh nằm trong một vỏ con không được gán .
Mã trả về sẽ bị mất theo lệnh xung quanh.
Viết lại các trường hợp này sao cho các lệnh Git xuất ra một tệp và các lệnh xung quanh chỉ gọi các hộp con bằng các lệnh không phải Git.
Vì vậy, thay vì viết:
git cat-file commit rebuild-1 | grep "^Side .* with .* backslash-n"
Kiểu:
git cat-file commit rebuild-1 >actual &&
grep "^Side .* with .* backslash-n" actual
git merge
(tại 1.7.4 - kernel.org/pub/software/scm/git/docs/v1.7.4/git-merge.html ) chỉ đề cập đến trạng thái trả lại ở một nơi (nếu bạn sử dụng "- -ff-only "và nó không thể thực hiện cam kết tua đi nhanh, nó trả về khác 0 - nó không nói rõ ràng những gì được trả về nếu tất cả hoạt động hoặc nếu có xung đột hợp nhất.