Cách xử lý các lỗi thường gặp trong git

1290

Đầu tiên muốn sửa được lỗi trong git ta phải thực hiện tạo ra nó trước đã. Vậy phần 1 mình sẽ nói 1 số lệnh cơ bản trong git theo follow tạo và sử dụng 1 project.

Các lệnh cơ bản

1. Khởi tạo git

  • Chắc ai cũng biết rồi muốn khởi tạo 1 repo ta dùng lệnh

2. Thêm mới remote vào project

3. Clone project

  • Bạn phát hiện ra là bạn đã có url của project sẵn rồi thì tội gì phải khởi tạo git mới nữa. Thay vào đó hãy dùng clone

4. Làm việc cùng branch

  • Git là một hệ thống quản lý phiên bản phân tán, vì thế mô hình của nó giống như một cái cây. Vậy bạn có thể nhận ra luôn là mỗi cái cây luôn có một thân cây chính, và các cành, nhánh nhỏ. Tương tự trong git ta có branch thể hiện mỗi nhánh nhỏ của một cái cây và nhánh chính tương đương với thân cây thường được gọi là master. Nếu từng làm việc thực tế trong các dự án bạn thường thấy nhánh master sẽ là nhánh rỗng, thay vào đó những developer sử dụng các nhánh có tên như development, product, test,…. Điều này giúp cho các lập trình viên phân biện và thao tác trên những môi trường tương ứng quan quá trình phát triển phần mềm một cách dễ dàng và minh bạch hơn.

  • Một số lệnh cơ bản

5. Hợp nhất branch

  • Đây là một trong những câu lệnh cơ bản thường dùng của quy trình. Nhưng với việc các tool hỗ trợ như github, gitlab,… thì việc sử dụng câu lệnh này chỉ còn nằm ở dưới local mà thôi.

6. Cập nhật code mới nhất về

Khi làm việc một mình thực tế bạn sẽ không cần đến git nhưng khi làm việc nhóm và muốn lấy code mới nhất từ một nhánh nào đó trên repo online về thì bạn sẽ dùng lệnh sau:

7. xem status và một vài thứ nữa

Những sự cố thường gặp trong Git

1. Viết sai message commit

  • Để thay đổi nộ dung commit, thêm, sửa file vào commit rất đơn giản bạn chỉ cần sử dụng

2. Đặt sai tên branch

  • Việc gõ nhầm hay thiết thành phần theo convention khi đặt tên branch là không hiếm. Lúc mới tiếp cận bạn thường lựa chọn giải pháp là tạo một branch mới. Có một cách nhanh hơn rất nhiều giống như rename trong các phần làm việc với file đó là dùng câu lệnh:

3. Commit chơi chơi và giờ muốn nó bay màu

  • Việc làm ngốc ngếch này diễn ra thường xuyên trong quá trình làm việc, vậy làm thế nào để code dữ nguyên và xóa commit đó đi, đầu tiên bạn phải tìm hiểu một số lý thuyết sau:

Note: HEAD, Working tree, Index trong git là gì?

  • Git giữ một con trỏ đặc biệt có tên HEAD. Trong Git, đây là một con trỏ tới nhánh nội bộ mà bạn đang làm việc
  • Trên Git, những thư mục được đặt trong sự quản lý của Git mà mọi người đang thực hiện công việc trong thực tế được gọi là working tree.
  • Giữa repository và working tree tồn tại một nơi gọi là index. Index là nơi để chuẩn bị cho việc commit lên repository

Cách 1: Sử dụng reset (khi chưa có ai pull về)

  • git reset HEAD~Di chuyển HEAD về vị trí commit reset và vẫn giữ nguyên tất cả các thay đổi của file, nhưng loại bỏ các thay đổi khỏi stage (Đưa HEAD và index về như cũ)

  • git reset --hard HEAD~
    • Di chuyển con trỏ HEAD về vị trí commit reset và loại bỏ tất cả sự thay đổi của file sau thời điểm commit reset
    • HEAD~ có ý nghĩa giống với HEAD^ hay @^, nghĩa là quay về trước 1 commit
    • Muốn quay về trước n commit, VD 5 commit thì có thể thay bằng HEAD~5.
    • --hard có nghĩa là bỏ commit đi và bỏ cả những thay đổi chưa được commit trong working space. Khi này môi trường sẽ hoàn toàn “sạch sẽ” như thời điểm trước khi commit
  • git reset --soft HEAD~
    • Lệnh này chỉ di chuyển HEAD về vị trí commit reset. Trạng thái của stage và tất cả sự thay đổi của file sẽ được giữ nguyên
    • --soft có nghĩa là bỏ commit đi nhưng giữ nguyên những thay đổi chưa được commit trong working space.
    • --soft hữu dụng khi bạn muốn giữ lại những thay đổi chưa commit cho lần commit tiếp theo

Cách 2: Sử dụng revert (người khác đã pull về)

Cách 3: Sử dụng –amend

4. Khi lỡ tay commit nhầm sang một branch khác

  • Có những lúc ta sơ suất lỡ tay commit thẳng vào master trong khi thực ra là muốn commit vào một branch khác

5. Gộp nhiều commit thành một commit

Sử dụng rebase + squash (or fixup) để tổng hợp lại các commit cũ

  • Squash: giữa nguyên commit message của những commit trước
  • Fixup: xoá commit message của những commit trước

6. Chia commit to thành nhiều commit nhỏ

7. Chuyển xang nhánh khác khi đang làm việc giở

8. Hồi phục commit quan trọng khi lỡ tay xóa nó đi

  • Đây hẳn là sự cố khủng khiếp nhất. Có thể xảy ra khi lỡ tay git reset –hard .Tuy nhiên, commit nào cũng có thể hồi phục được

9. Khôi phục branch đã xóa

10. Khôi phục về trạng thái trước khi merge

  • Note: Chỉ cho trường hợp mà người khác vẫn chưa pull code về

11. Khôi phục về trạng thái trước khi pull từ remote

  • Sau khi pull code về cập nhật nhưng thấy conflict nhiều như núi thì quả là muốn trở lại như cũ

12. Khi bạn muốn rename 1 nhánh cả ở local và trên remote (github)

13. Khi bạn muốn xoá 1 branch trên remote từ xa

Đó là các thao tác cơ bản và cách sửa một số lỗi thường gặp khi làm việc với git của mình. Rất mong các bạn góp ý để mình cải thiện bài viết này và các bài sau hơn nữa. 😃

Đừng bỏ lỡ những bài viết hay liên quan:

Xem thêm việc làm Software Developers hấp dẫn tại TopDev

TopDev via viblo

  Combo các lệnh Git đủ dùng trong một dự án cho người mới bắt đầu
  Git - Học nghiêm túc một lần (Phần 1)