Làm cách nào để git rebase cam kết đầu tiên?


128

Tôi đã từng git inittạo một repo mới, sau đó thực hiện ba lần cam kết. Bây giờ tôi muốn rebase để quay lại và sửa đổi cam kết đầu tiên của mình, nhưng nếu tôi làm vậy git rebase -i HEAD~3thì sẽ phàn nàn! Nếu tôi thử tương tự với HEAD~2thì nó cũng hoạt động nhưng chỉ cho phép tôi sắp xếp lại hai lần cam kết cuối cùng.

Làm cách nào để tham chiếu đến 'cam kết trước khi có bất kỳ cam kết nào' hoặc quay lại và chèn một cam kết trống?


4
Có thể có bản sao của Chỉnh sửa cam kết gốc trong Git?
Liam

Câu trả lời:


216

Cách dễ dàng, với một git đủ gần đây (cái này đã ra mắt lâu rồi nên bạn nên có cái này):

git rebase -i --root

Một cách dễ dàng khác, như twalberg đã lưu ý trong một nhận xét , là sử dụng git checkout --orphanđể thiết lập tạo một cam kết gốc mới, bạn có thể sao chép các cam kết cũ ở trên đó. ( rebase -i --rootDù sao thì đây cũng là những gì đang làm trong nội bộ.)


Sử dụng git rebase -i --rootTôi nhận được lỗi error: cannot 'fixup' without a previous commitkhi cố gắng dẹp cam kết thứ hai (Tôi chỉ muốn là người đầu tiên)
mikemaccana

Chính xác thì bạn đang chỉnh sửa gì trong tờ hướng dẫn? Bạn nên có một danh sách các cam kết, với các cam kết cũ nhất ở trên cùng và lệnh pickcho từng cam kết . Thay đổi thứ hai pick thành squashhoặc fixup, viết ra tờ hướng dẫn, thoát khỏi trình soạn thảo của bạn và Git sẽ thực hiện công việc.
torek
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.