Trong Git, thuật ngữ hoàn lại, hoàn lại, hồi lại(revert) được sử dụng để hoàn lại một số thay đổi. Lệnh git revert được sử dụng để áp dụng thao tác hoàn lại. Nó là một loại lệnh hoàn tác. Tuy nhiên, nó không phải là một thay thế huỷ bỏ truyền thống. Nó không xóa bất kỳ dữ liệu nào trong quá trình này, thay vào đó, nó sẽ tạo ra sự thay đổi với tác dụng ngược lại, đó là hoàn lại commit đã chỉ định nào đó. Nói chung, git revert là một commit.
Nó có thể hữu ích để theo dõi các lỗi trong dự án. Nếu bạn muốn xóa nội dung nào đó khỏi lịch sử thì git revert là một lựa chọn sai lầm.
Hơn nữa, chúng ta có thể nói rằng git revert ghi lại một số thay đổi mới đối lập với các commit đã thực hiện trước đó. Để hoàn lại các thay đổi, hãy chạy lệnh dưới đây:
Cú pháp:
git revert
Nội dung chính
1. Tùy chọn trong Git revert:
Git hoàn lại cho phép một số thao tác bổ sung như chỉnh sửa, không chỉnh sửa, dọn dẹp và hơn thế nữa. Chúng ta cùng tìm hiểu ngắn gọn các tùy chọn này:
<commit>: Tùy chọn commit được sử dụng để hoàn lại một commit. Để hoàn lại một commit, chúng ta cần id tham chiếu commit. Lệnh git log có thể truy cập nó.
git revert < commit-ish >
<–edit>: Nó được sử dụng để chỉnh sửa tin nhắn commit trước khi hoàn lại commit. Nó là một tùy chọn mặc định trong lệnh git revert.
git revert -e < commit-ish >
-m parent-number / – mainline parent-number: nó được sử dụng để hoàn lại việc hợp nhất(merge). Nói chung, chúng ta không thể hoàn lại một hợp nhất(merge) vì chúng ta không biết mặt nào của hợp nhất(merge) nên được coi là nhánh chính để merge. Chúng ta có thể chỉ định parent-number và cho phép hoàn lại để đảo ngược thay đổi liên quan đến parent đã chỉ định.
-n / –no edit: Tùy chọn này sẽ không mở trình soạn thảo văn bản. Nó sẽ trực tiếp hoàn lại commit cuối cùng.
git revert -n < commit-ish >
–cleanup = <mode>: Tùy chọn xóa sạch cách khoảng trắng và nhận xét khỏi tin nhắn.
-n / – no-commit: Nói chung, đây là lệnh hoàn lại commit theo mặc định. Tùy chọn không commit sẽ không tự động commit. Ngoài ra, nếu tùy chọn này được sử dụng, chỉ mục(index) của bạn không phải khớp với commit HEAD.
Tùy chọn không commit có lợi cho việc hoàn lại nhiều hơn một hiệu ứng commit đối với chỉ mục(index) liên tiếp của bạn.
Chúng ta sẽ tìm hiểu cách hoàn lại các commit trước đó.
2. Git hoàn lại về commit trước đó
Giả sử bạn đã thực hiện một thay đổi đối với file tin newfile2.txt của dự án của bạn. Và sau đó, bạn nhắc nhở rằng bạn đã thực hiện một commit sai trong file sai hoặc sai nhánh. Bây giờ, bạn muốn hoàn tác các thay đổi mà bạn có thể thực hiện. Git cho phép bạn sửa chữa những sai lầm của mình. Hãy xem xét hình ảnh dưới đây:
Như bạn có thể thấy từ đầu ra ở trên rằng tôi đã thực hiện các thay đổi trong newfile2.txt. Chúng ta có thể hoàn tác nó bằng lệnh git revert. Để hoàn tác các thay đổi, chúng ta sẽ cần commit. Để kiểm tra phạm vi commit, hãy chạy lệnh dưới đây:
git log
Hãy xem xét đầu ra dưới đây:
Trong đầu ra ở trên, tôi đã sao chép commit-ish gần đây nhất để hoàn lại. Bây giờ, tôi sẽ thực hiện thao tác hoàn lại trên commit này. Nó sẽ hoạt động như sau:
git revert 2a1f35380f03ed1fcfb958422d3ccaeaad95a99f
Lệnh trên sẽ hoàn lại commit cuối cùng của tôi. Hãy xem xét đầu ra dưới đây:
Như bạn có thể thấy từ đầu ra ở trên, các thay đổi được thực hiện trên kho lưu trữ đã được hoàn lại.
3. Git Revert Merge
Trong Git, hợp nhất(Merge) cũng là một commit có ít nhất hai 2 nhanh gọp lại. Nó kết nối các nhánh và code để tạo ra một dự án hoàn chỉnh.
Hợp nhất trong Git là một commit có ít nhất 2 nhanh gọp lại. Nó tập hợp nhiều dòng phát triển. Trong luồng công việc mà các tính năng được phát triển trong các nhánh và sau đó được hợp nhất thành một dòng chính, các commit hợp nhất thường sẽ từ 2 nhánh nào đó.
4. Cách hoàn lại hợp nhất
Thông thường, hoàn lại một hợp nhất được coi là một quá trình phức tạp. Nó có thể phức tạp nếu không được thực hiện đúng cách. Chúng ta sẽ hoàn lại thao tác hợp nhất với sự trợ giúp của lệnh git revert. Mặc dù một số lệnh khác như git reset có thể thực hiện được. Chúng ta sẽ tìm hiểu cách hoàn lại một hợp nhất. Hãy xem xét ví dụ dưới đây.
Tôi đã thực hiện một số thay đổi đối với file newfile2.txt của mình trong nhánh branch2 và hợp nhất nó với nhánh main . Hãy xem xét đầu ra dưới đây:
Để hoàn lại một hợp nhất, chúng ta phải lấy số tham chiếu của nó. Để kiểm tra lịch sử commit, hãy chạy lệnh dưới đây:
git log
Lệnh trên sẽ hiển thị lịch sử commit. Hãy xem xét đầu ra dưới đây:
Từ đầu ra ở trên, sao chép commit hợp nhất của bạn mà bạn muốn hoàn lại và chạy lệnh dưới đây:
git revert < tham chiếu commit > -m 1
Lệnh trên sẽ hoàn lại hoạt động hợp nhất. Ở đây, -m 1 được sử dụng cho nhánh chính đầu tiên. commit hợp nhất có nhiều nhánh, nên việc hoàn lại cần thông tin bổ sung để quyết định chọn nhánh gốc của hợp nhất để coi là dòng chính. Trong những trường hợp như vậy, tham số -m được sử dụng. Hãy xem xét đầu ra dưới đây:
Từ đầu ra ở trên, chúng ta có thể thấy rằng hợp nhất trước đó đã được hoàn lại.
Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.
Tài liệu từ cafedev:
- Full series tự học Git từ cơ bản tới nâng cao tại đây nha.
- Ebook về Git tại đây.
- Các nguồn kiến thức MIỄN PHÍ VÔ GIÁ từ cafedev tại đây
Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:
Chào thân ái và quyết thắng!