Git - Amend, thay đổi commit cuối cùng
Trong một số trường hợp bạn commit nhưng bị quên add một số file nào đó và bạn không muốn tạo ra một commit mới thì có thể sử dụng lệnh commit kết hợp tahm số --amend
để gộp các file đó và bổ sung vào commit cuối cùng, vì vậy không tạo ra commit mới.
1. Lệnh Git commit --amend
Cú pháp của lệnh này như sau:
$ git commit --amend
Nếu bạn thực hiện lệnh này ngay sau commit cuối cùng mà không thay đổi gì thêm thì ảnh của commit cuối cùng đó không thay đổi gì, chỉ là nội dung message thay đổi mà thôi. Trình soạn thảo sẽ hiển thị để bạn thay đổi message, đương nhiên bạn có thể để message mặc định mà git đã tạo ra, và message này sẽ ghi đè lên message trước đó.
Bài viết này được đăng tại [free tuts .net]
$ git commit -m "Bo sung header" $ git add "myfile.html" $ git commit --amend
2. Loại bỏ tập tin đã đưa vào stage
Khi bạn đã thêm một file nào đó vào stage (trạng thái staged, đây là trạng thái sẽ được đưa vào blod khi committed) nhưng sau đó muốn loại bỏ nó ra khỏi stage thì có thể sử dụng lệnh reset HEAD.
Ví dụ bạn tạo ra 2 file là freetuts.txt và freetutsdotnet.txt và bạn sử dụng lệnh sau để thêm vào stage.
$ git add freetuts.txt $ git add freetutsdotnet.txt
Sau khi thực hiện lệnh này bạn sẽ chạy lệnh commit để đưa nó vào git directory, tuy nhiên bạn nhận thấy file freetuts.txt không cần thiết để đưa vào commit thì lúc này bạn sẽ thực hiện các bước sau để loại bỏ nó ra khỏi stage.
Trước tiên bạn hãy gõ lệnh sau để xem hướng dẫn của git.
$ git status
Kết quả sẽ trả về như sau:
On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: freetuts.txt new file: freetutsdotnet.txt
Câu use "git reset HEAD <file>..." to unstage
ý muốn nói bạn hãy sử dụng lệnh git reset HEAD để loại bỏ một file ra khỏi stage. Như trên mình sẽ loại bỏ file freetus.txt
bằng lệnh sau:
$ git reset HEAD freetuts.txt
Bạn thử gõ lệnh git status
xem có thay đổi gì không nhé, kết quả như sau:
On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: freetutsdotnet.txt Untracked files: (use "git add <file>..." to include in what will be committed) freetuts.txt
Kể quả bảo rằng bạn đã loại bỏ 1 file ra khỏi stage, muốn thêm nó vào lại stage thì dùng lệnh add.
3. Lời kết
Như vậy để bổ sung vào commit cuối cùng thì ta sử dụng lệnh commit nhưng thêm tham số -amend vào phía sau $ git commit --amend
, sau đó làm theo hướng dẫn trên màn hình của editor. Muốn loại bỏ một file ra khỏi stage thì sử dụng lệnh $ git reset HEAD <file_name>
.