2015-05-04 12 views
5

Giả sử trong một khoảnh khắc, tôi có tệp trong một kho lưu trữ có tên LICENSE.txt. Nội dung trông như sau:Cách so sánh bản sao làm việc, sao chép dàn trang và bản sao cam kết của tệp bằng git

Copyright 2014 MyCompany. All Rights Reserved. 

Kể từ năm 2015 của nó tôi đã thay đổi năm cái 2015 của nó:

Copyright 2015 MyCompany. All Rights Reserved. 

Và sau đó dàn dựng các tập tin

git add LICENSE.txt 

Được một chút phân tâm, tôi đã thực hiện một thay đổi khác đối với LICENSE.txt để phản ánh rằng một tổ chức khác có chung bản quyền.

Copyright 2015 MyCompany and Affiliates. All Rights Reserved. 
Copyright 2015 Other Company. All Rights Reserved. 

Tôi có thể thấy sự khác biệt giữa bản sao làm việc của tôi và dàn dựng bản sao bằng cách chạy

git diff 

Và tôi có thể thấy sự khác biệt giữa các bản sao tổ chức và bản cam kết bằng cách chạy

git diff --cached 

Làm cách nào để so sánh bản sao cam kết (bản sao không có thay đổi năm) với bản sao làm việc (bản sao có bản quyền bổ sung)?

Đây hoàn toàn là một ví dụ. Có những trường hợp phức tạp hơn nhiều khi tôi có nhu cầu so sánh những gì tôi đã tổ chức với những thay đổi mà sau đó tôi đã thực hiện cho tệp. So sánh nội dung của bản sao làm việc và bản sao theo giai đoạn sẽ xác định xem tôi có nên thay thế bản sao theo giai đoạn hay không.

Tôi đang chạy git 1.9.5 trên Windows Server 2012 R2.

+0

'git diff' không làm những gì bạn yêu cầu, hãy xem câu trả lời được chấp nhận. Bạn có thể chỉnh sửa bài đăng của mình để người đọc trong tương lai không bị dẫn sai không? –

+0

Tôi đã thực hiện thay đổi.Sự nhầm lẫn xuất phát từ thực tế là khi bạn không dàn dựng bất kỳ thay đổi nào, nhưng thực hiện thay đổi đối với bản sao làm việc của bạn, 'git diff' sẽ hiển thị sự khác biệt giữa bản sao làm việc và bản sao được cam kết. – bloudraak

+0

Khi bạn không tổ chức bất kỳ thay đổi nào, 'git diff' hoạt động giống như khi bạn đã thực hiện các thay đổi. Nhưng cả hai khác biệt đều bình đẳng. –

Trả lời

14

Làm cách nào để so sánh bản sao theo giai đoạn (bản có thay đổi năm) với bản sao làm việc.
[...] Tôi có cần phải so sánh những gì tôi đã dàn dựng với những thay đổi sau đó tôi thực hiện cho các tập tin

Đó vẫn sẽ là git diff.

(chỉnh sửa bởi OP:. Làm thế nào để so sánh cam bản sao (một với sự thay đổi năm) với bản sao làm việc

Sau đó, nó sẽ là git diff HEAD)

http://images.abizern.org.s3.amazonaws.com/365git/Feb11/Git%20Diff%202.png

(365git: Getting a diff between the working tree and other commits)

Nếu bạn đang tìm kiếm thứ gì đó khác với git diffdiff --cached, mà lá bạn với:

git diff HEAD 

Đó là: sự khác biệt giữa phiên bản đã cam kết và cây làm việc.

+0

Bạn đã trình bày tất cả các kịch bản mà tôi đang tìm kiếm với một minh họa rất rõ ràng. Cảm ơn đã dành thời gian. – bloudraak

+0

Cần lưu ý rằng nếu bạn chưa dàn xếp bất kỳ thay đổi nào, 'git diff' sẽ hiển thị sự khác biệt giữa bản sao được cam kết và bản sao làm việc. – bloudraak

+0

@bloudraak true: HEAD và chỉ mục sẽ giống hệt nhau trước 'git add' đầu tiên. – VonC

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