Tôi chỉ phát hiện ra rằng nếu các thay đổi không được cam kết của bạn được thêm vào chỉ mục (nghĩa là "dàn dựng", sử dụng git add ...
), thì git stash apply
(và, có lẽ, git stash pop
) sẽ thực sự hợp nhất. Nếu không có xung đột, bạn là vàng. Nếu không, giải quyết chúng như bình thường với git mergetool
hoặc bằng tay với trình chỉnh sửa.
Để rõ ràng, đây là quá trình tôi đang nói về:
mkdir test-repo && cd test-repo && git init
echo test > test.txt
git add test.txt && git commit -m "Initial version"
# here's the interesting part:
# make a local change and stash it:
echo test2 > test.txt
git stash
# make a different local change:
echo test3 > test.txt
# try to apply the previous changes:
git stash apply
# git complains "Cannot apply to a dirty working tree, please stage your changes"
# add "test3" changes to the index, then re-try the stash:
git add test.txt
git stash apply
# git says: "Auto-merging test.txt"
# git says: "CONFLICT (content): Merge conflict in test.txt"
... đó có lẽ là những gì bạn đang tìm kiếm.
tl; dr
Chạy git add
trước.