112

Tôi có một repo với tập tin footrong nhánh chính. Tôi chuyển sang chi nhánh thanh và thực hiện một số thay đổi foo. Làm thế nào bây giờ tôi có thể chạy git diffgiữa bản sao này (chưa được cam kết) và bản sao của nhánh chính?

|
116

Các công việc sau đây cho tôi:

git diff master:foo foo

Trong quá khứ, nó có thể là:

git diff foo master:foo

|
  • 1

    Mỗi lần tôi thấy câu trả lời của bạn liên quan git diff, tôi luôn nghĩ về stackoverflow.com/questions/5256249/git-diff-doesnt-show-enough/

    – Dương Thiện Sinh 14:12:26 02/02/2012
  • 1

    Bạn đã thử với một --để tách các tham số khỏi các đối số đường dẫn? git diff -- master:foo foo

    – Lý Quang Thái 16:13:08 02/02/2012
  • 1

    Trên 1.8, git diff -- master:foo fookhông hoạt động - dường như coi arg master:foolà tên tệp không tồn tại (và bỏ qua nó) thay vì tệp trong một nhánh. Hãy thử chuyển đổi 2 đối số cuối cùng - nếu nó hoạt động, so sánh khác phải được đảo ngược, nhưng đầu ra không thay đổi.

    – Trịnh Diệu Hạnh 20:24:54 11/09/2014
  • 1

    Đối với tôi thì ngược lại - tôi có thể làm git diff master:foo foonhưng không phải ngược lại. Tôi cũng không hiểu. Với git 1.7.9.5 / Ubuntu 12.04 ít nhất tôi có thể làm git diff -R master:foo foođể có được sự khác biệt mà tôi thực sự muốn. Khi tôi thử điều đó với msysgit 1.9.4 / Windows 7 x64 tôi nhận được fatal: unable to read 0000000000000000000000000000000000000000. Không có -Rtôi nhận được thông báo lỗi giống như bạn với git 1.7.9.5, nhưng với 1.9.4 tôi nhận được fatal: master:foo: no such path in the working tree.

    – Tạ Kim Yến 22:28:06 21/11/2014
  • 1

    Một câu hỏi Git khác với câu trả lời được chấp nhận không hoạt động ...

    – Lý Hương Lan 19:55:30 13/07/2016
85

Bạn đang cố gắng so sánh cây làm việc của mình với một tên nhánh cụ thể, vì vậy bạn muốn điều này:

git diff master -- foo

Đó là từ hình thức git-diff này (xem trang chủ git-diff)

   git diff [--options] <commit> [--] [<path>...]
       This form is to view the changes you have in your working tree
       relative to the named <commit>. You can use HEAD to compare it with
       the latest commit, or a branch name to compare with the tip of a
       different branch.

FYI, cũng có một tùy chọn --cached(aka --staged) để xem khác biệt của những gì bạn đã dàn dựng, thay vì mọi thứ trong cây làm việc của bạn:

   git diff [--options] --cached [<commit>] [--] [<path>...]
       This form is to view the changes you staged for the next commit
       relative to the named <commit>.
       ...
       --staged is a synonym of --cached.
|
14

Cũng thế: git diff master..feature foo

git diff foo master:fookhông làm việc trên các thư mục cho tôi.

|
9
git difftool -v tag/branch filename
|
  • 1

    Đây là câu trả lời duy nhất phù hợp với tôi để so sánh giữa một bản sao làm việc cục bộ của một tệp và phiên bản tệp đó trong một repo từ xa (không phải "bản gốc"). Cảm ơn, Adir và Baz

    – Tạ Mộng Thu 01:44:22 06/05/2018
8
git diff mybranch master -- file

cũng nên làm việc

|

Câu trả lời của bạn (> 20 ký tự)

Bằng cách click "Đăng trả lời", bạn đồng ý với Điều khoản dịch vụ, Chính sách bảo mật and Chính sách cookie của chúng tôi.

Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ hoặc hỏi câu hỏi của bạn.