Đáng buồn là điều này cũng xảy ra với tôi khá thường xuyên và tôi sử dụng git stash
nếu tôi nhận ra lỗi của mình trước đó git commit
và sử dụnggit cherry-pick
khác, cả hai lệnh được giải thích khá tốt trong các câu trả lời khác
Tôi muốn thêm một sự làm rõ cho git checkout targetBranch
: lệnh này sẽ chỉ bảo vệ thư mục làm việc của bạn và ảnh chụp nhanh được tổ chức nếu targetBranch có cùng lịch sử với chi nhánh hiện tại của bạn
Nếu bạn chưa thực hiện các thay đổi của mình, chỉ cần sử dụng thanh toán git để di chuyển đến chi nhánh mới và sau đó cam kết chúng bình thường
@ Tuyên bố của Amber là không sai, khi bạn di chuyển đến một newBranch , git checkout -b newBranch
, một con trỏ mới được tạo ra và nó được trỏ đến chính xác cùng một cam kết như chi nhánh hiện tại của bạn.
Trên thực tế, nếu bạn tình cờ có một chi nhánh khác chia sẻ lịch sử với chi nhánh hiện tại của bạn (cả hai điểm tại cùng một cam kết), bạn có thể "di chuyển các thay đổi của mình" bằng cáchgit checkout targetBranch
Tuy nhiên, thông thường các nhánh khác nhau có nghĩa là lịch sử khác nhau và Git sẽ không cho phép bạn chuyển đổi giữa các nhánh này với một thư mục làm việc bẩn hoặc khu vực tổ chức. trong trường hợp bạn có thể thực hiện git checkout -f targetBranch
(làm sạch và thay đổi vứt bỏ) hoặc git stage
+ git checkout targetBranch
(xóa và lưu thay đổi), chỉ cần chạy git checkout targetBranch
sẽ gây ra lỗi:
lỗi: Các thay đổi cục bộ của bạn đối với các tệp sau sẽ bị ghi đè khi thanh toán: ... Vui lòng cam kết thay đổi của bạn hoặc bỏ qua chúng trước khi bạn chuyển nhánh. Hủy bỏ