2014-11-20 16 views
6

Xin chào Tôi là một người mới đến git và tôi không hiểu sự khác biệt cơ bản giữa git resetgit revert là gì. Có phải git revert hoàn nguyên quá trình hợp nhất đang được đẩy không?Sự khác nhau giữa git reset và git revert là gì?

+0

có thể trùng lặp của [Sự khác nhau giữa Git Revert, Checkout và Reset là gì?] (Http://stackoverflow.com/questions/8358035/whats-the-difference-between-git-revert-checkout-and-reset) –

+0

Có tôi đã nhận được giải pháp ở đây cũng như liên kết mà bạn đã đề cập sau khi tôi đăng câu hỏi – arachnid

Trả lời

24

Theo như tôi biết, họ đang làm điều hoàn toàn khác.

git revert nhằm hoàn nguyên tác động của lần commit trước đó. Ví dụ,

A <- B <- C 
     ^HEAD 

Nếu tôi tìm thấy BI cam kết trước là sai, và tôi muốn "undo" thay đổi của nó, git-revert -ing B sẽ gây ra:

A <- B <- C <- B' 
      ^HEAD 

B' được đảo ngược sự thay đổi thực hiện trong B.

git reset là hơn thẳng về phía trước, nó chỉ đơn giản là thiết lập các HEAD để một số cam kết,

A <- B <- C 
     ^HEAD 

git-reset -ting đến B sẽ cung cấp cho bạn

A <- B <- C 
    ^HEAD 
+0

Cảm ơn, nó đã giúp !!! – arachnid

+0

Cân nhắc chấp nhận câu trả lời nếu câu trả lời đúng và hữu ích. –

+0

Ồ vâng chắc chắn .. Chấp nhận – arachnid

0

Git reset -> di chuyển là đỉnh của một chi nhánh để một khác nhau cam kết. Điều này có thể được sử dụng để xóa các cam kết khỏi nhánh hiện tại. Nó di chuyển nhánh ngược lại bằng các cam kết. Git Hoàn nguyên -> hoàn tác một cam kết bằng cách tạo một cam kết mới. Đây là một cách an toàn để hoàn tác các thay đổi, vì nó không có cơ hội viết lại lịch sử cam kết.

Các vấn đề liên quan