Khi dùng git theo dõi thay đổi dự án, nhiều việc có thể xảy ra gây lỗi. Khi chuyển từ nhánh này sang nhánh khác, bạn có thể gặp lỗi:
error: the following untracked working tree files would be overwritten by checkout [ Danh sách File Ở Đây ] Please, commit your changes or stash them before you can switch branches.
Lỗi này xảy ra khi bạn có file trên nhánh hiện tại có thay đổi trên nhánh bạn đang làm việc cũng. Cách sửa khá đơn giản: làm chính xác điều câu cuối trong lỗi nói.
Commit Thay đổi (Commit Changes)
Để commit thay đổi, bạn nhập:
git commit -m "Insert meaningful git commit message here"
Điều này nên làm sạch working tree. Sau đó dùng git checkout <tên-nhánh> để đổi nhánh.
Stash Thay đổi (Stash Changes)
Dùng git stash lưu thay đổi cho đến khi sẵn sàng commit. Git stash bảo toàn thay đổi, nhưng không liên kết với commit hoặc nhánh nào cho đến khi sẵn sàng.
Để dùng stash, làm sau trong kho cục bộ:
git stash push git checkout <nhánh-cần-chuyển> --- làm gì cần trên <nhánh-cần-chuyển> --- git checkout <nhánh-trước> git stash pop
Nếu bạn quen stack, điều này trực quan. Nhắc lại, stack là cấu trúc dữ liệu last-in-first-out (LIFO). Stash mới thêm vào cuối danh sách. Pop nó khi sẵn sàng dùng.
Hành vi mặc định là pop phần tử cuối danh sách stash và xóa hoàn toàn. Nếu không muốn loại stash, chỉ muốn dùng, bạn làm với git stash apply.
Kết luận
Trong bài này, xem 2 cách sửa lỗi working tree file bị ghi đè khi checkout. Hầu hết thời gian, có thể làm chính xác điều git lỗi nói để sửa. Trong trường hợp này, hoặc commit thay đổi hoặc stash để làm sạch working tree để đổi nhánh. Cách bạn chọn phụ thuộc vào quy trình git của team. Luôn hỏi giúp đỡ nếu không chắc nên làm cái nào. Happy hacking!