Xuất bản sách Oh Shit, Git?
(ohshitgit.com)-
Cách giải quyết vấn đề với Git
- Nhấn mạnh rằng Git là một công cụ phức tạp và dễ mắc lỗi, nên việc tìm cách xử lý sự cố không hề dễ.
- Giải thích ngắn gọn bằng tiếng Anh đơn giản về nhiều tình huống sự cố khác nhau và cách khắc phục.
-
Các tình huống sự cố và cách giải quyết
-
Khi muốn hoàn tác một thao tác sai
- Dùng
git reflogđể xem danh sách các thao tác trước đó, rồi dùnggit reset HEAD@{index}để quay lại thời điểm mong muốn.
- Dùng
-
Khi cần chỉnh sửa nhỏ sau khi commit
- Sau khi sửa, dùng
git add .vàgit commit --amend --no-editđể thêm thay đổi vào commit cuối cùng. - Lưu ý: không sửa các commit đã được công khai.
- Sau khi sửa, dùng
-
Khi muốn đổi message của commit cuối cùng
- Dùng
git commit --amendđể thay đổi message.
- Dùng
-
Khi đã commit nhầm vào nhánh sai
- Tạo một nhánh mới rồi dùng
git reset HEAD~ --hardđể xóa commit khỏi nhánh master, sau đó chuyển sang nhánh mới để giữ lại commit.
- Tạo một nhánh mới rồi dùng
-
Khi lệnh diff không hoạt động
- Dùng
git diff --stagedđể kiểm tra khác biệt của các file đã được staging.
- Dùng
-
Khi muốn hoàn tác một commit trước đó
- Tìm commit bằng
git log, rồi dùnggit revert [saved hash]để hoàn tác commit đó.
- Tìm commit bằng
-
Khi muốn hoàn tác thay đổi của một file
- Tìm commit trước đó bằng
git log, rồi dùnggit checkout [saved hash] -- path/to/fileđể khôi phục file.
- Tìm commit trước đó bằng
-
-
Khác
- Khi muốn đưa repository về trạng thái ban đầu
- Dùng
git fetch origin,git checkout master,git reset --hard origin/masterđể đồng bộ với repository từ xa. - Dùng
git clean -d --forceđể xóa các file và thư mục chưa được theo dõi.
- Dùng
- Khi muốn đưa repository về trạng thái ban đầu
-
Lưu ý
- Trang này không phải là tài liệu tham khảo toàn diện, và có thể có nhiều cách khác nhau để xử lý.
- Gửi lời cảm ơn tới nhiều người đã tham gia vào bản dịch.
1 bình luận
Ý kiến Hacker News
git switchthay chogit checkoutreset --hard, và đề xuất cách xử lý khi lỡ commit vào nhánh sai bằng cách tạo một nhánh mớicherry-pickgit reflogvì dễ đọc nhầm thành "re-flog"