Git: Sửa đổi thông báo cam kết hiện có

Sai lầm là phổ biến, tất cả chúng ta đều mắc phải. Đó là lý do tại sao người ta đặt cục tẩy lên bút chì. Và điều này cũng không khác gì với các công cụ như Git. Mặc dù khó có thể hoàn tác một số thay đổi nhưng thường vẫn có cách.

Vì vậy, điều gì xảy ra nếu bạn muốn sửa đổi một thông báo cam kết hiện có? May mắn thay, điều này rất đơn giản để thực hiện trong Git, nhưng phương pháp có thể thay đổi một chút tùy thuộc vào một số yếu tố.

Khắc phục cam kết cuối cùng, chưa được đẩy đến từ xa

Đây là trường hợp đơn giản nhất vì không cần phải sửa đổi kho lưu trữ từ xa, bạn chỉ cần sửa đổi kho lưu trữ của riêng mình. Trong trường hợp này, bạn có thể sử dụng lệnh sau:

$ git commit --amend

Chạy lệnh này sẽ mở ra một trình chỉnh sửa nơi bạn có thể sửa đổi cuối cùng tin nhắn cam kết. Khi bạn đã hoàn tất và lưu/đóng trình chỉnh sửa, thông báo cam kết sẽ được thay đổi.

Cá nhân tôi thích thực hiện hầu hết mọi thứ trên dòng lệnh, bạn có thể thực hiện bằng cách thêm đối số và thông báo vào lệnh trên:

$ git commit --amend -m "Added a new file"

Làm theo cách này sẽ không mở trình soạn thảo mà thay vào đó nó sẽ sửa đổi thông báo cam kết ngay lập tức.

Khắc phục cam kết cuối cùng, được đẩy đến từ xa

Đây là một trường hợp phổ biến khác và khó sửa hơn một chút, không chỉ vì chúng tôi cần sửa đổi kho lưu trữ của riêng mình mà còn cần sửa đổi kho lưu trữ từ xa, có thể đi trước chi nhánh cục bộ của bạn.

Bước đầu tiên là sửa đổi cam kết cuối cùng, giống như chúng ta đã làm trong phần trước:

$ git commit --amend -m "Added a new file"

Sau đó, bạn cần đẩy những thay đổi này vào kho lưu trữ từ xa. Tuy nhiên, điều này phải được thực hiện bằng cách sử dụng --force cờ.

$ git push <remote> <branch> --force

Chúng ta cần làm theo cách này để ghi đè kho lưu trữ từ xa bằng trạng thái cục bộ của chính chúng ta.

Hãy lưu ý rằng bằng cách ép đẩy, bạn cũng sẽ thua bất kỳ cam kết nào trên chi nhánh địa phương mà bạn chưa có trong chi nhánh địa phương của mình. Tiến hành thận trọng!

Xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, các tiêu chuẩn được ngành công nghiệp chấp nhận và bảng lừa đảo đi kèm. Dừng lệnh Googling Git và thực sự học nó!

Nếu bạn có thể nắm bắt được lỗi đủ nhanh thì việc thực hiện thay đổi sẽ không thành vấn đề. Nếu không, bạn có thể cần tìm giải pháp khác để tránh mất bất kỳ thay đổi nào được thực hiện sau thông báo cam kết mà bạn muốn thay đổi.

Sử dụng Rebase tương tác

Một tùy chọn khác, linh hoạt hơn so với các giải pháp trước đây được mô tả, là sử dụng cơ sở dữ liệu tương tác. Làm điều này cho phép bạn kiểm tra N cam kết cuối cùng và thực hiện các thay đổi đối với chúng, bao gồm chọn, cắt, v.v.

Để bắt đầu rebase, bạn có thể sử dụng lệnh sau:

$ git rebase -i HEAD~n

Ở đây, n là số lượng cam kết bạn muốn kiểm tra và chỉnh sửa. Sau đó, bạn sẽ thấy danh sách các cam kết, tương tự như sau:

$ $ git rebase -i HEAD~4
pick 788ebf0 Oops, I forgot to add a new file
pick ced1329 Fixed a super critical bug
pick 5e9cdc5 Added a new file



















Như bạn có thể thấy tất cả N cam kết cuối cùng được liệt kê và bạn có thể sửa đổi thông báo của chúng nếu cần.

Dấu thời gian:

Thêm từ xếp chồng lên nhau