[Git] Xóa một commit từ một branch
Git
51
gitrebase
2
devops
11
White

Nguyen Sy Thanh Son viết ngày 09/06/2016

Có thể bạn sẽ không bao giờ nghĩ đến việc phải xóa một commit trong Git. Tuy nhiên, biết đâu đấy, trong tương lai, có khi bạn lại cần đến nó. Bài viết này sẽ chia sẻ với các bạn cách xóa một commit cụ thể trên một branch nào đó bằng cách sử dụng git rebase -i. Cách xóa này sẽ khác với việc sử dụng git revert, vì nó không tạo thêm một commit nào sau khi xóa.

Chúng ta sẽ bắt đầu với một cây các commits như sau:

/tmp/test$ git log --graph --all --oneline --decorate
* 16ab9a2 (HEAD, dev) Commit B1
* 077795b Commit A1
| * 9dec2b5 (master) Commit D
|/  
* ea61baa Commit C
* 786219e Commit B
* 2fa7d48 Commit A

Ví dụ của mình là xóa "Commit C" từ branch DEV. Để làm được điều đó, chúng ta thực hiện lên sau khi đang ở branch DEV:

git rebase -i ea61baa^

Trong đó, ea61baa là hash key của "Commit C". Và dấu ^ thể hiện rằng bạn muốn rebase bao gồm cả "Commit C". Sau khi vào lệnh, một editor (vi hoặc nano) sẽ bật lên với nội dung sau:

pick ea61baa Commit C
pick 077795b Commit A1
pick 16ab9a2 Commit B1

# Rebase 786219e..16ab9a2 onto 786219e
#
# 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

Đến đây, chúng ta chỉ cần xóa dòng pick ea61baa Commit C, ghi và thoát editor.

Chúng ta thu được kết quả như sau:

/tmp/test$ git log --graph --all --oneline --decorate
* f8814f4 (HEAD, dev) Commit B1
* 1377c45 Commit A1
| * 9dec2b5 (master) Commit D
| * ea61baa Commit C
|/  
* 786219e Commit B
* 2fa7d48 Commit A

Như vậy là chúng ta đã hoàn thành ví dụ "Xóa một commit từ một branch".

Các bạn có thể xem thêm video của mình trên Youtube


Hoặc đọc bản Tiếng Anh ở đây Delete a commit from a Git Branch

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

Nguyen Sy Thanh Son

6 bài viết.
86 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
29 1
Như các bạn biết, Internet Of Things là môt xu thế công nghệ được mọi người hướng tới nhiều nhất trong thời gian qua. Những Developer kinh nghiệm c...
Nguyen Sy Thanh Son viết hơn 1 năm trước
29 1
White
11 0
Trong phần này, mình sẽ tiếp tục chia sẻ với các bạn ngày thứ 2 học IOT của mình. Trong phần trước, mình đã tìm hiểu cơ bản về ESP8266, và NodeMCU...
Nguyen Sy Thanh Son viết hơn 1 năm trước
11 0
White
9 0
Trong bài viết này, mình sử dụng một máy ảo Ubunut Trusty 14.04, đã cài sẵn Docker. Để dựng máy ảo, mình sử dụng Vagrant và VirtualBox. Để tìm hiểu...
Nguyen Sy Thanh Son viết gần 2 năm trước
9 0
Bài viết liên quan
White
3 0
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 c...
Dang Viet Ha viết gần 2 năm trước
3 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


White
{{userFollowed ? 'Following' : 'Follow'}}
6 bài viết.
86 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á!