Giả sử anh chàng kia đã tạo thanh trên đầu foo, nhưng bạn đã tạo baz trong khi đó và sau đó hợp nhất, đưa ra một lịch sử về
$ git lola
* 2582152 (TRỤ, chủ) Hợp nhất chi nhánh 'otherguy'
|
| * c7256de (otherguy)
* | b7e7176
| /
* 9968f79 foo
Lưu ý: git lola là một bí danh không chuẩn nhưng hữu ích.
Không có xúc xắc với git revert
:
$ git hoàn nguyên
gây tử vong: Cam kết 2582152 ... là một sự hợp nhất nhưng không có tùy chọn -m nào được đưa ra.
Charles Bailey đã đưa ra một câu trả lời xuất sắc như thường lệ. Sử dụng git revert
như trong
$ git Revert --no-edit -m 1 ĐẦU
[master e900aad] Hoàn nguyên "Hợp nhất chi nhánh 'otherguy'"
0 tệp đã thay đổi, 0 phần chèn (+), 0 phần xóa (-)
xóa chế độ 100644 bar
có hiệu quả xóa bar
và tạo ra một lịch sử của
$ git lola
* e900aad (CHÍNH, chủ) Hoàn nguyên "Hợp nhất chi nhánh 'otherguy'"
* 2582152 Hợp nhất chi nhánh 'otherguy'
|
| * c7256de (otherguy)
* | b7e7176
| /
* 9968f79 foo
Nhưng tôi nghi ngờ bạn muốn vứt bỏ cam kết hợp nhất:
$ git đặt lại - đầu trang ^
Hiện tại đang ở b7e7176 baz
$ git lola
* b7e7176 (TRỤ, chủ)
| * c7256de (otherguy)
| /
* 9968f79 foo
Như tài liệu git rev-parse
hướng dẫn
<rev>^
, ví dụ: ĐẦU ^,v1.5.1^0
Hậu tố ^
cho tham số sửa đổi có nghĩa là cha mẹ đầu tiên của đối tượng cam kết đó. ^<n>
có nghĩa là cha mẹ thứ n ( nghĩa <rev>^
là tương đương với <rev>^1
). Như một quy tắc đặc biệt, <rev>^0
có nghĩa là bản thân cam kết và được sử dụng khi <rev>
là tên đối tượng của đối tượng thẻ tham chiếu đến đối tượng cam kết.
vì vậy trước khi gọi git reset
, HEAD^
(hoặc HEAD^1
) là b7e7176 và HEAD^2
là c7256de, tức là , tương ứng là cha mẹ thứ nhất và thứ hai của cam kết hợp nhất.
Hãy cẩn thận với git reset --hard
vì nó có thể phá hủy công việc.