Tôi đã luôn nghĩ git resetvà git checkoutgiống nhau, theo nghĩa là cả hai đưa dự án trở lại một cam kết cụ thể. Tuy nhiên, tôi cảm thấy chúng không thể giống hệt nhau, vì điều đó sẽ là dư thừa. Sự khác biệt thực sự giữa hai là gì? Tôi hơi bối rối, vì svn chỉ svn cophải hoàn nguyên cam kết.
THÊM
VonC và Charles đã giải thích sự khác biệt giữa git resetvà git checkoutthực sự tốt. Sự hiểu biết hiện tại của tôi là hoàn nguyên git resettất cả các thay đổi trở lại một cam kết cụ thể, trong khi git checkoutít nhiều chuẩn bị cho một chi nhánh. Tôi thấy hai sơ đồ sau khá hữu ích để hiểu điều này:

THÊM 3
Từ http://think-like-a-git.net/sections/rebase-from-the-ground-up/USE-git-cherry-pick-to-simulation-git-rebase.html , thanh toán và đặt lại có thể mô phỏng cuộc nổi loạn.
git checkout bar
git reset --hard newbar
git branch -d newbar
-- filesbiến thể; Tôi không chắc chắn.) Sơ đồ đó làm cho nó có vẻ như sự khác biệt chính là liệu chúng có ảnh hưởng đến chỉ số hay WD không. Xem câu trả lời của tôi về điều đó. Các sơ đồ thứ 2 và 3 rất hữu ích để thấy sự khác biệt thực sự. Các sơ đồ thứ 4 và 5 rất hữu ích để kiểm tra xem bạn có hiểu những lệnh này làm gì không, nhưng sẽ không thực sự giúp bạn đạt được điều đó.
think-like-a-git.netbài viết được liên kết ) là bắt buộc để tránh mất dữ liệu.


