0
0
Lập trình
Hưng Nguyễn Xuân 1
Hưng Nguyễn Xuân 1xuanhungptithcm

Cách chỉnh sửa lịch sử commit git cục bộ với git rebase và Vscode

Đăng vào 4 tháng trước

• 3 phút đọc

Chủ đề:

#vscode#git

Cách chỉnh sửa lịch sử commit git cục bộ với git rebase và Vscode

Giới thiệu

Trong quá trình phát triển phần mềm, việc quản lý lịch sử commit là rất quan trọng. Đôi khi, bạn cần chỉnh sửa hoặc xóa các tệp lớn trong lịch sử commit của mình để giữ cho kho lưu trữ của bạn gọn gàng. Bài viết này sẽ hướng dẫn bạn cách sử dụng git rebase để chỉnh sửa lịch sử commit cục bộ, đặc biệt là khi bạn đang sử dụng Visual Studio Code (Vscode) làm IDE.

Tình huống

Giả sử bạn có một tệp lớn trong lịch sử commit của mình như sau:

  • Tệp src\build_llm_learn\p7_digitalsreeni_210_unet_segmentation_models\model_examine\model_exec.ipynb với kích thước 160MB.
  • Một tệp khác là examine_main.ipynb.

Bạn muốn đi đến từng commit, xóa tệp lớn này hoặc chỉnh sửa nó để giảm kích thước, cho từng commit trong lịch sử git.

Quy trình thực hiện

1. Tạo nhánh sao lưu

Trước khi bắt đầu, bạn nên tạo một nhánh sao lưu để tránh mất dữ liệu:

bash Copy
git branch backup-before-cleanup

2. Sử dụng git rebase

  • Trong bảng điều khiển git của Vscode, lấy hash của commit đầu tiên.
  • Mở terminal git bash.
  • Chạy lệnh sau để bắt đầu rebase:
bash Copy
git rebase -i <hash_commit>

3. Đánh dấu các commit để chỉnh sửa

Một trình soạn thảo sẽ mở ra với danh sách các commit gần đây của bạn. Thay đổi từ pick thành edit cho những commit mà bạn muốn chỉnh sửa:

bash Copy
edit <hash_commit_1> Commit đầu tiên với tệp lớn
edit <hash_commit_2> Commit thứ hai, có thêm thay đổi

Lưu và đóng trình soạn thảo.

4. Bắt đầu chỉnh sửa trong rebase

Git sẽ quay lại commit đầu tiên trong danh sách. Tại đây, bạn có thể xóa tệp lớn:

bash Copy
git rm --cached path/to/your/large_file.ext

Sau đó, bạn cần commit thay đổi:

bash Copy
git commit --amend --no-edit

Tiếp tục rebase đến commit tiếp theo:

bash Copy
git rebase --continue

5. Chỉnh sửa tệp bằng Vscode

Bạn có thể mở tệp trong Vscode, chỉnh sửa nó, và lưu lại. Sau đó, trong bảng điều khiển git của Vscode:

  • Stage thay đổi và commit giống như bạn thường làm.
  • Nhấn continue để tiếp tục rebase.

6. Xử lý vấn đề xung đột

Trong quá trình rebase, bạn có thể gặp phải xung đột. Khi đó, git sẽ thông báo:

bash Copy
CONFLICT (content): Merge conflict in path/to/your/file

Bạn có thể mở bảng điều khiển git để xử lý xung đột. Nếu tệp quá lớn, bạn có thể chọn cách chấp nhận phiên bản cũ:

bash Copy
git checkout <commit_hash> -- path/to/your/file

Sau đó, chỉnh sửa tệp theo nhu cầu và tiếp tục rebase.

7. Thực hành tốt nhất

  • Tạo nhánh sao lưu trước khi thực hiện bất kỳ thay đổi nào để tránh mất dữ liệu.
  • Kiểm tra xung đột một cách cẩn thận trước khi tiếp tục rebase.

8. Những cạm bẫy thường gặp

  • Quên lưu thay đổi trước khi đóng trình soạn thảo.
  • Không kiểm tra kỹ lưỡng các xung đột có thể gây ra lỗi trong mã nguồn.

9. Mẹo về hiệu suất

  • Sử dụng lệnh git status thường xuyên để theo dõi tình trạng của nhánh và các thay đổi.
  • Sử dụng Vscode để dễ dàng xem và chỉnh sửa tệp.

FAQ

Q: Có cần phải tạo nhánh sao lưu không?
A: Có, việc tạo nhánh sao lưu giúp bảo vệ bạn khỏi những sai sót không mong muốn.

Q: Làm thế nào để xử lý xung đột khi rebase?
A: Bạn có thể mở tệp có xung đột, chỉnh sửa và sau đó tiếp tục rebase.

Kết luận

Việc chỉnh sửa lịch sử commit trong git là một kỹ năng quan trọng mà mọi lập trình viên nên biết. Sử dụng git rebase cùng với Vscode giúp bạn dễ dàng quản lý và tổ chức mã nguồn của mình. Hãy thử ngay hôm nay và nâng cao kỹ năng git của bạn! Nếu bạn có câu hỏi hoặc cần thêm thông tin, hãy để lại ý kiến trong phần bình luận.

Tài nguyên tham khảo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào