Viết lại lịch sử của git bằng cách sử dụng interactive rebase
Git
54
gitrebase
2
White

Dang Viet Ha viết ngày 04/09/2017

Trong một vài tình huống do sơ xuất chúng ta có thể commit thiếu file lên git server hoặc ghi nội dung comment chưa được như ý muốn hoặc nội dung comment chưa đúng theo quy tắc chung đã đưa ra. Trong tình huống đó, để sửa nội dung đã commit chúng ra có thể sử dụng lệnh git rebase -i như sau:

Trước khi sử dụng git rebase thì working directory phải đang sạch sẽ. Nếu như bạn đang làm dở công việc mà muốn rebase thì có thể sử dụng git stash để lưu tạm công việc còn dang dở vào stash list. Sau đó, có thể lấy ra để tiếp tục công việc.

  1. Chạy lệnhgit rebase -i trên chính branch cần sửa nhưng lùi 1 version bằng cách chỉ định HEAD~1

    $ git rebase -i HEAD~1
    
  2. git sẽ hiển thị ra file như sau để cho phép chúng ra sửa đổi nội dung đã commit theo nhu cầu

    pick eb9b5de Add test case for Not Found 404
    
    # Rebase 9c7458a..eb9b5de onto 9c7458a
    #
    # Commands:
    #  p, pick = use commit
    #  r, reword = use commit, but edit the commit message
    #  e, edit = use commit, but stop for amending
    #  s, squash = use commit, but meld into previous commit
    #  f, fixup = like "squash", but discard this commit's log message
    #  x, exec = run command (the rest of the line) using shell
    #
    # These lines can be re-ordered; they are executed from top to bottom.
    #
    # If you remove a line here THAT COMMIT WILL BE LOST.
    #
    # However, if you remove everything, the rebase will be aborted.
    #
    # Note that empty commits are commented out
    

    ở đây ví dụ chúng ra cần sử nội dung comment, thì chúng ra sẽ sửa nội dung file trên thành nưh sau

    e eb9b5de Add test case for Not Found 404
    
  3. Lưu nội dung file trên và thoát khỏi trình soạn thảo. Sau đó, chạy lệnh sau đây để sửa nội dung comment

    git commit --amend 
    
  4. Git sẽ hiển thị trình soạn thảo để cho phép chúng ra sửa nội dung comment như sau

    Add test case for Not Found 404
    
    # Please enter the commit message for your changes. Lines starting
    # with '#' will be ignored, and an empty message aborts the commit.
    #
    # Date:      Sun Mar 6 11:47:10 2016 +0700
    #
    # rebase in progress; onto 9c7458a
    # You are currently editing a commit while rebasing branch 'master' on '9c7458a'.
    #
    # Changes to be committed:
    #       modified:   api/server_test.go
    #    
    
  5. Giả dụ chúng ta cần sửa comment code đẻ thêm số issue #112 vào comment như sau

    Add test case for Not Found 404 #112
    
  6. Gõ lệnh git rebase --continue để tiếp tục và hoàn thành rebase. Nếu trong quá trình rebase, bạn suy nghĩ lại không muốn thực hiện rebase nữa thì có thể sử dụng lệnh git rebase --abort

  7. Đến bước này chúng ra đã hoàn thành việc thay đổi nội dung comment của lịch sử commit. Bước cuối cùng là push thay đổi lên git server là xong.

    $ git push --force origin master
    

    Một chú ý nhỏ ở đây, chúng ta phải sử dụng push --force vì local và remote repo đang bị lệch về version, not-fast-forward

    Hãy cẩn thận khi sử dụng push --force vì có thể bạn sẽ làm mất source code của người khác.

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Dang Viet Ha

12 bài viết.
23 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
18 0
Trong thời điểm hiện tại thì JSON REST API vẫn đang rất phổ biến và phổ thông nhất bởi tính dễ sử dụng của nó. Tuy nhiên, các hãng công nghệ lớn lu...
Dang Viet Ha viết 2 năm trước
18 0
White
11 2
Gần đây, tôi có tham gia vào một sự kiện của (Link) và biết được việc sử dụng (Link) để tự động hoá công việc của các sysadmin khá tiện dụng. Hôm n...
Dang Viet Ha viết hơn 2 năm trước
11 2
White
8 4
Bài viết liên quan
White
49 8
Tôi xin tổng hợp các cách dùng git stash tôi hay sử dụng Lưu lại thay đổi Git stash được sử dụng khi muốn lưu lại các thay đổi chưa commit, thườ...
BB viết 3 năm trước
49 8
White
13 2
Xin chào các bạn. Chắc hẳn mỗi chúng ta đều đã từng phát triển app sử dụng API của bên thứ 3, và chắc mọi người đều biết là hầu hết các API service...
Hải Nguyễn viết hơn 1 năm trước
13 2
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
12 bài viết.
23 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!