Những cách khắc phục nhầm lẫn trong Git
Git
54
White

Le Lam viết ngày 17/07/2015

Khi mới học Git mình hay mắc khá nhiều lỗi, và thời gian đi tìm hiểu khắc phục những lỗi tạo ra nhiều khi quá cả thời gian quay lại commit trước và làm lại. Tuy vậy Git có những tiện ích rất linh hoạt để sửa đổi lại cây nhánh commit. Ở đây mình sẽ viết lại những phương pháp hay dùng cho các bạn nào gặp trường hợp tương tự.

Thay đổi nội dung commit đằng trước

Nhiều khi viết commit message hay bị viết sai, viết thiếu và lỡ commit luôn. Để sửa lại commit vừa mới ở đằng trước, ta có thể đơn giản gọi lại câu lệnh commit với amend

git commit --amend

Nếu nội dung muốn thay đổi không chỉ là message mà gồm cả thiếu file, thì đơn giản có thể add lại file và dùng amend như trên

git add file-name
git commit --amend

Undo

Muốn "undo" thay đổi trên một file cố định trước khi commit, có thể dùng câu lệnh reset

git reset file-name

Nếu muốn undo hẳn một commit (do đã lỡ commit xong rồi) thì cần chỉ định mục tiêu

git reset --soft HEAD~1

Ở đây HEAD~1 nghĩa là trước 1 commit. Mình dùng soft để lưu lại những thay đổi chưa commit và chỉ bỏ đi phần đã commit từ lần trước

Nếu muốn bỏ cả phần đã commit từ lần trước và phần chưa commit thì đổi soft thành hard

git reset --hard HEAD~1

Clean

Khi branch đang làm việc có quá nhiều file mới (chưa được add), và mình muốn clean hết, thì có thể dùng một câu lệnh

git clean --force

Thay đổi tên tác giả của commit

Hồi mới đầu mình hay bị lỗi này. Khi chưa setup email và password cho Git thì lúc commit sẽ bị username đổi thành username của OS.
Để sửa lại những commit bị sai tên mình làm như sau

git config user.name "new name"
git config user.email newmail@abc.com
git commit --amend --reset-author

Rebase

Sau khi làm xong một chức năng, nhìn lại sẽ thấy commit của mình bị lắt nhắt và lẻ tẻ. Lúc này mình hay dùng chiến lược rebase, tất nhiên là chỉ trên branch của bản thân. rebase là một tính năng hoàn hảo của Git, với option interactive thì không có gì là không làm được

git rebase --i # or git rebase --interactive

git rebase -i sẽ hỏi bạn từng bước và hướng dẫn cụ thể sau khi bạn đánh câu lệnh trên. Thông thường mình hay dùng s(squash) hoặc f(fixup) và p(pick).

Kết luận

Bạn còn có cách nào hay để khắc phục nhầm lần trong Git nữa ? Cho mình biết với nhé !

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

Le Lam

3 bài viết.
8 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
17 2
Git reflog có thể nhiều bạn đã biết rồi, mình viết lại ở đây để memo cho bản thân. Lỡ tay reset hard Git reflog gần như là vũ khí cuối cùng để c...
Le Lam viết gần 3 năm trước
17 2
White
15 2
Tôi lỡ push một vài commit xấu và tôi muốn xóa đi mà không ai biết :v Giả sử bạn đã "lỡ" push 1 vài commit không hay lên master $ git log oneline...
Le Lam viết gần 3 năm trước
15 2
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
White
5 7
Thông thường một feature mới thường được làm trên một nhánh (branch) riêng và thường xuyên pull các cập nhật từ nhánh master trong quá trình đấy. S...
Lơi Rệ viết gần 3 năm trước
5 7
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


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