git reset
có cờ rất quan trọng của --soft
, --hard
và --mixed
(và --keep
và --merge
)
http://git-scm.com/docs/git-reset
--mixed
là mặc định và khi bạn làm git reset sha file
bạn đang làm mixed
reset theo đó:
--mixed
Đặt lại chỉ mục nhưng không phải là cây đang hoạt động (tức là, các tệp đã thay đổi được giữ nguyên nhưng không được đánh dấu là cam kết) và báo cáo những gì chưa được cập nhật . Đây là hành động mặc định.
Như đã nói ở trên, quá trình đặt lại trong trường hợp này sẽ không chạm vào cây đang hoạt động của bạn và chỉ phiên bản trong chỉ mục được đặt lại thành chỉ trong sha.
git checkout
mặt khác:
Khi hay --patch được đưa ra, git checkout không chuyển chi nhánh. Nó cập nhật các đường dẫn có tên trong cây làm việc từ tệp chỉ mục hoặc từ một tên (thường là một cam kết).
Vì vậy, khi bạn làm git checkout
bạn sẽ mất những thay đổi trong các tập tin và nó sẽ được thay thế bằng bất cứ điều gì đã có trong phiên bản của tập tin trong sha, trong khi đó khi bạn làm như reset hỗn hợp, chỉ trỏ của bạn sẽ được đặt lại và thư mục làm việc của bạn sẽ vẫn có các thay đổi mà bạn có thể thực hiện lại sau này khi cần.
có thể trùng lặp của [Sự khác nhau giữa 'git reset' và 'git checkout' là gì?] (Http://stackoverflow.com/questions/3639342/whats-the-difference-between-git-reset-and-git -checkout) – nawfal