🛠 Flow an toàn xử lý stash pop có conflict

1. Kiểm tra danh sách stash

git stash list

Ví dụ:

stash@{0}: WIP on main: abc1234 Update UI
stash@{1}: WIP on dev: def5678 Fix bug

2. Áp dụng stash mà không xóa (để an toàn)

Thay vì pop, dùng:

git stash apply stash@{0}

📌 Lý do: apply giữ nguyên stash trong danh sách, phòng trường hợp bạn làm hỏng merge và muốn làm lại.


3. Nếu bị conflict, Git sẽ báo:

Auto-merging file.txt
CONFLICT (content): Merge conflict in file.txt

4. Xem file bị conflict

git status

Git sẽ liệt kê những file ở trạng thái both modified.


5. Mở file và sửa conflict

Git sẽ đánh dấu như:

<<<<<<< HEAD
Nội dung hiện tại trên branch
=======
Nội dung từ stash
>>>>>>> stash

➡ Bạn chỉnh lại sao cho ra nội dung cuối cùng mong muốn.


6. Đánh dấu đã sửa

git add <file1> <file2> ...

7. Hoàn tất merge

Nếu Git đang ở trạng thái merge, bạn chạy:

git merge --continue

Nếu Git không yêu cầu --continue (thường với apply), chỉ cần commit:

git commit -m "Apply stash and resolve conflicts"

8. Khi chắc chắn đã xong và stash an toàn, xóa stash

git stash drop stash@{0}

9. Nếu muốn áp dụng stash và xóa luôn (sau khi thử an toàn trước)

Khi đã test xong bằng apply, lần sau có thể dùng:

git stash pop stash@{0}

📌 Nhưng nếu pop bị conflict, bạn phải sửa giống các bước trên.
Khác ở chỗ: nếu pop thất bại, stash đã bị xóa một phần, không khôi phục dễ như apply.


📋 Tóm tắt quyết định an toàn

Tình huốngLệnh khuyên dùng
Lần đầu áp dụng stash, sợ mất dữ liệugit stash apply
Đã test an toàn, muốn gọngit stash pop
Conflict khi pop/applySửa như merge → git addgit commit