Tôi đã luôn nghĩ git reset
và git checkout
giố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 co
phả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 reset
và git checkout
thực sự tốt. Sự hiểu biết hiện tại của tôi là hoàn nguyên git reset
tấ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
-- files
biế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.net
bài viết được liên kết ) là bắt buộc để tránh mất dữ liệu.