Nếu bạn không cam kết thay đổi
Nếu những thay đổi của bạn tương thích với các chi nhánh khác
Đây là trường hợp từ câu hỏi vì OP muốn cam kết với một nhánh mới và cũng áp dụng nếu các thay đổi của bạn tương thích với nhánh mục tiêu mà không kích hoạt ghi đè.
Như trong câu trả lời được chấp nhận của John Brodie, bạn chỉ cần kiểm tra chi nhánh mới và cam kết công việc:
git checkout -b branch_name
git add <files>
git commit -m "message"
Nếu thay đổi của bạn không tương thích với các chi nhánh khác
Nếu bạn gặp lỗi:
error: Your local changes to the following files would be overwritten by checkout:
...
Please commit your changes or stash them before you switch branches
Sau đó, bạn có thể sắp xếp công việc của mình, tạo một nhánh mới, sau đó bật các thay đổi của nhóm và giải quyết các xung đột:
git stash
git checkout -b branch_name
git stash pop
Sẽ như thể bạn đã thực hiện những thay đổi đó sau khi tạo chi nhánh mới. Sau đó, bạn có thể cam kết như bình thường:
git add <files>
git commit -m "message"
Nếu bạn đã cam kết thay đổi
Nếu bạn muốn giữ các cam kết trong nhánh ban đầu
Xem câu trả lời của Carl Norum với cách hái anh đào, đây là công cụ phù hợp trong trường hợp này:
git checkout <target name>
git cherry-pick <original branch>
Nếu bạn không muốn giữ các cam kết trong nhánh ban đầu
Xem câu trả lời của joeytwiddle về bản sao tiềm năng này . Thực hiện theo bất kỳ bước nào ở trên nếu thích hợp, sau đó cuộn lại nhánh ban đầu:
git branch -f <original branch> <earlier commit id>
Nếu bạn đã đẩy các thay đổi của mình sang một điều khiển từ xa được chia sẻ như GitHub, bạn không nên thử quay lại trừ khi bạn biết bạn đang làm gì.