Một giải pháp thay thế là cam kết các thay đổi, và sau đó loại bỏ các cam kết đó. Điều này ban đầu không có lợi ích ngay lập tức, nhưng nó mở ra khả năng cam kết trong các khối và để tạo thẻ git để sao lưu.
Bạn có thể làm điều đó trên nhánh hiện tại, như thế này:
git add (-A) .
git commit -m"DISCARD: Temporary local changes"
git tag archive/local-changes-2015-08-01 # optional
git revert HEAD
git reset HEAD^^
Hoặc bạn có thể làm điều đó trên đầu tách ra. (giả sử bạn bắt đầu trên chi nhánh BRANCHNAME):
git checkout --detach HEAD
git add (-A) .
git commit -m"DISCARD: Temporary local changes"
git tag archive/local-changes-2015-08-01 # optional
git checkout BRANCHNAME
Tuy nhiên, những gì tôi thường làm là cam kết theo từng khối, sau đó đặt tên cho một số hoặc tất cả các cam kết là "KHÁM PHÁ: ...". Sau đó sử dụng rebase tương tác để loại bỏ các cam kết xấu và giữ các cam kết tốt.
git add -p # Add changes in chunks.
git commit -m"DISCARD: Some temporary changes for debugging"
git add -p # Add more stuff.
git commit -m"Docblock improvements"
git tag archive/local-changes-2015-08-01
git rebase -i (commit id) # rebase on the commit id before the changes.
# Remove the commits that say "DISCARD".
Điều này dài dòng hơn, nhưng nó cho phép xem lại chính xác những thay đổi bạn muốn loại bỏ.
Các git lol
vàgit lola
các phím tắt đã rất hữu ích với công việc này.
git help reset
vàgit help clean