2011-08-02 38 views
10

Tại sao git cho phép tôi đặt lại tệp? Tôi nghĩ rằng tôi hiểu được reset, theo nghĩa là nó đang di chuyển HEAD ... rõ ràng là tôi đã sai.Sự khác biệt giữa tệp git reset và git checkout file là gì?

Vì vậy, git reset sha file có vẻ giống như git checkout sha file, ngoại trừ việc tôi thấy file trong chỉ mục và trong thư mục làm việc.

Điều đó không có ý nghĩa đối với tôi. Ai đó có thể giải thích sự khác biệt?

+0

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

Trả lời

3
git checkout 

Hoàn nguyên thay đổi tệp.

git reset 

Xóa tệp khỏi khu vực dàn dựng nhưng giữ thay đổi.

+0

Vì vậy, 'git reset' trên bất kỳ PATH, loại bỏ nó khỏi khu vực dàn dựng, và nếu nó là một SHA, nó di chuyển HEAD đến changeset đó? Thế thì tại sao đôi khi git lại gợi ý 'git rm --cached' để unstage? – Senthess

+1

Kinh nghiệm của tôi là có nhiều cách để làm mọi thứ trong git, điều này có lẽ không phải là một thứ gì đó. –

6

git reset có cờ rất quan trọng của --soft, --hard--mixed (và --keep--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ác vấn đề liên quan