2012-08-01 31 views
6

Tôi đang sử dụng lệnh git và Kaleidoscope để thực hiện đánh giá mã của mình. Khi tôi kết hợp một chi nhánh thành khác và gõLàm thế nào để Kaleidoscope tích hợp git của tôi hiển thị tất cả các tệp sắp được cam kết?

git difftool 

Kaleidoscope chỉ hiển thị các thay đổi được 'không dàn dựng cho cam' và không hiển thị 'con đường Đã hủy' hoặc 'thay đổi để được cam kết'.

Dòng lệnh hiển thị phần còn lại của nội dung.

Bất kỳ ý tưởng nào tại sao?

Đây là của tôi ~/.gitconfig

[user] 
     name = Dirty Henry 
     email = [email protected] 
[core] 
     excludesfile = /Users/dirty/.gitignore_global 
     editor = mate 
[difftool "Kaleidoscope"] 
     cmd = ksdiff-wrapper git \"$LOCAL\" \"$REMOTE\" 
[mergetool "sourcetree"] 
     cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\" 
     trustExitCode = true 
[diff] 
     tool = Kaleidoscope 
[credential] 
     helper = osxkeychain 
[difftool] 
     prompt = false 

Trả lời

14

câu trả lời ngắn gọn: những gì bạn muốn được gõ trên dòng lệnh là git difftool HEAD, không git difftool.

Câu trả lời dài: Đây là hành vi git bình thường, và thật là bực bội nếu bạn không nhận ra điều gì đang xảy ra. Tôi không chắc chắn lý do tại sao các dòng lệnh diff đang làm việc như bạn mong đợi, nhưng cả hai git diffgit difftool nên thực hiện tương tự như mỗi trang git người đàn ông:

git diff [--options] [-] [< đường dẫn > ...] Biểu mẫu này là để xem các thay đổi bạn đã thực hiện liên quan đến chỉ mục (khu vực dàn dựng cho lần commit tiếp theo). Nói cách khác, sự khác biệt là những gì bạn có thể nói với git để tiếp tục thêm vào chỉ mục nhưng bạn vẫn chưa có. Bạn có thể thực hiện các thay đổi này bằng cách sử dụng git-add (1).

Vì vậy git diffgit difftool sẽ hiển thị bạn chỉ unstaged thay đổi.

Nếu bạn muốn xem dàn dựng thay đổi, bạn nên sử dụng git diff --cachedgit difftool --cached thay vì:

git diff [--options] --cached [<cam>] [-] [< đường > ...] Biểu mẫu này là để xem các thay đổi bạn đã tổ chức cho cam kết tiếp theo liên quan đến tên < cam kết >. Thông thường bạn sẽ muốn so sánh với cam kết mới nhất, vì vậy nếu bạn không cung cấp cho < cam kết >, giá trị mặc định là HEAD. Nếu HEAD không tồn tại (ví dụ: các chi nhánh chưa sinh) và < cam kết > không được cung cấp, nó sẽ hiển thị tất cả các thay đổi theo giai đoạn. --staged là một từ đồng nghĩa của --cached.

Cuối cùng, nếu bạn muốn xem cả dàn dựng và unstaged thay đổi, bạn sử dụng các hình thức thứ ba, git diff HEAD hoặc git difftool HEAD: diff

git [--options] <cam> [- ] [< đường dẫn > ...] Biểu mẫu này là để xem những thay đổi bạn có trong cây đang hoạt động của mình liên quan đến tên < cam kết >. Bạn có thể sử dụng HEAD để so sánh nó với cam kết mới nhất hoặc tên chi nhánh để so sánh với đầu của một nhánh khác.

+0

tuyệt vời. Cảm ơn! –

1
git difftool --staged 

Sẽ cung cấp cho bạn chính xác điều đó.

staged trong trường hợp này là từ đồng nghĩa với cached, mặc dù tôi thấy dễ nhớ hơn staged.

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