Home » TechNote » Các vấn đề dễ gặp phải khi dùng git và cách xử lý

Các vấn đề dễ gặp phải khi dùng git và cách xử lý

1, Giới thiêu.

Như bài trước mình đã giới thiệu về git bài này mình xin đưa ra một số vd dễ gặp phải trong khi xử dụng git và cách giải quyết nó.



2, Các trường hợp cụ thể
  • Merge nhiều commit liền nhau?
    • Trong khi lập trình code của bạn luôn có sự thay đổi, sau khi commit lên github và có nhiều comment của nhóm trưởng về coding Convention hay các cải tiến trong code. Sau khi chỉnh sửa phần này code của bạn lại được commit lên github. Khi đó trên github của bạn sẽ có nhiêu commit trên 1 requets vì  vậy bạn phải gộp  các commit này thành 1 commit trước khi nó được merge. Vậy làm thế nào để gộp nhiều commit thành 1 commit?

Cách giải quết đưa ra là “rebase” các commit này.

Tại terminal bạn gõ: git log --online để xem các commit của bạn:



Như trên bạn muốn gộp 2 commit 8143fbd, 3b4e5ef thành 1 commit.

ta sẽ làm như sau: git rebase -i HEAD~2



Thay: pick 3b4e5ef   Edit account. => f 3b4e5ef   Edit account. và lưu lại.

khi lưu thành công việc rebase của bạn coi như thành công tới 90% việc còn lại rất đơn giản chỉ là đưa code lên server bằng câu lệnh push. Điểm cần chú ý ở đây là bạn cần phải thêm -f sau câu lện push để nó ghi đè dữ liệu lên sever.

git push kieu work_edit_account -f


  • Merge nhiều commit không liền nhau? 

Tại terminal bạn gõ: git log --online để xem các commit của bạn:



khi muốn merge 2 commit 8143fbd và 3b4e5ef thành 1 commit thì ta sẽ làm như thế nào?

ta sẽ làm như sau:

B1: Tạo 1 branch mới tại thờii điểm commit: b358725

B2: Update code mới : ”  Merge pull request #968 from avc/tmp”

B3: Lấy 2 commit (3b4e5ef, 8143fbd ) cần rebase từ branch cũ về branch mới

B4: Thực hiện rebase commit.

cụ thể với vd trên là sẽ làm như sau:

B1: git checkout -b temp b358725  << tạo một branch tên là temp tại vi trí commit b358725

B2: git pull <remote-master> <branch-master> << apdate dữ liệu mới tương đương commit ff9d95d   Merge pull request #968 from avc/tmp

B3: git cherry-pick 3b4e5ef  << lấy 2 commit 3b4e5ef về branch hiện tại temp

       git cherry-pick 8143fbd << lấy 2 commit 8143fbd về branch hiện tại temp

B4:  rebase như ví dụ 1.

 Trên đây là các ví dụ mình hay gặp trong khi xử dụng git mong nó sẽ giúp đỡ được các bạn. Thanks!