Trong trường hợp của một cuộc nổi loạn trong quá khứ mà bạn đã không hủy bỏ đúng cách, bây giờ bạn (Git 2.12, Q1 2017) có git rebase --quit
Xem cam kết 9512177 (ngày 12 tháng 11 năm 2016) của Nguyễn Thái Ngọc Duy ( pclouds
) .
(Được hợp nhất bởi Junio C Hamano - gitster
- trong cam kết 06cd5a1 , ngày 19 tháng 12 năm 2016)
rebase
: thêm --quit
vào dọn dẹp rebase, để mọi thứ khác không bị ảnh hưởng
Có những lúc bạn quyết định hủy bỏ một cuộc nổi loạn đang diễn ra và chuyển sang làm việc khác nhưng bạn lại quên làm " git rebase --abort
" trước . Hoặc cuộc nổi loạn đã được tiến hành trong một thời gian dài mà bạn quên nó. Đến lúc bạn nhận ra rằng (ví dụ bằng cách bắt đầu một cuộc nổi loạn khác) thì đã quá muộn để lấy lại các bước của bạn. Giải pháp là bình thường
rm -r .git/<some rebase dir>
và tiếp tục với cuộc sống của bạn.
Nhưng có thể có hai thư mục khác nhau cho <some rebase dir>
(và rõ ràng nó đòi hỏi một số kiến thức về cách rebase hoạt động) và phần " .git
" có thể dài hơn nhiều nếu bạn không ở top-dir hoặc trong một worktree được liên kết. Và " rm -r
" rất nguy hiểm khi thực hiện .git
, một lỗi trong đó có thể phá hủy cơ sở dữ liệu đối tượng hoặc dữ liệu quan trọng khác.
Cung cấp " git rebase --quit
" cho trường hợp sử dụng này, bắt chước một tiền lệ là " git cherry-pick --quit
".
Trước Git 2.27 (quý 2 năm 2020), mục nhập stash được tạo bởi " git merge --autostash
" để giữ trạng thái bẩn ban đầu đã bị loại bỏ do nhầm lẫn " git rebase --quit
", đã được sửa.
Xem cam kết 9b2df3e (28 tháng 4 năm 2020) của Denton Liu ( Denton-L
) .
(Được hợp nhất bởi Junio C Hamano - gitster
- trong cam kết 3afdeef , ngày 29 tháng 4 năm 2020)
rebase
: Lưu autostash nhập cảnh vào stash reflog
trên--quit
Đã ký tắt: Denton Liu
Trong a03b55530a (" merge
: tùy chọn dạy - tự động", 2020-04-07, Git v2.27.0 - hợp nhất được liệt kê trong lô số 5 ), --autostash
tùy chọn đã được giới thiệu cho git merge
.
(Xem phần " Có thể git pull
tự động chặn và bật các thay đổi đang chờ xử lý? ")
Đáng chú ý, khi git merge --quit
được chạy với mục nhập tự động, nó được lưu vào kho lưu trữ stash.
Điều này trái ngược với hành vi hiện tại của git rebase --quit
nơi mục nhập tự động đơn giản là bị loại khỏi sự tồn tại.
Thông qua hành vi của git merge --quit
trong git rebase --quit
và lưu mục nhập tự động vào kho lưu trữ stash thay vì chỉ xóa nó.