2011-12-19 29 views
6

Lệnh này hoạt động tốt:Tôi có thể sử dụng đường dẫn đầy đủ bằng git như thế nào?

git diff relative/path/to/file.ext 

Nhưng nếu tôi sử dụng đường dẫn đầy đủ, git nói rằng con đường "nằm ngoài kho":

git diff /full/path/then/relative/path/to/file.ext 

Tôi cho rằng git không tìm thấy một thư mục .git trong/đầy đủ, vì vậy đó là lý do tại sao nó không thành công.

Nhưng làm thế nào để tôi làm cho git hiểu đường dẫn đầy đủ, như subversion?

Cập nhật: Phiên bản git 1.7.0.5

Cập nhật: Những tập tin này luôn bên kho của tôi, và thư mục hiện tại của tôi cũng là bên trong kho lưu trữ của tôi! Nó vẫn cho lỗi đó.

+0

Ông có thể giải thích tại sao bạn cần điều này? – Mat

+1

"kho lưu trữ bên ngoài" thường có nghĩa là thư mục hiện tại không phải là một phần của kho lưu trữ git, do đó lệnh git không hoạt động. Thay đổi thành một thư mục làm việc git, và nó sẽ làm việc với bất kỳ đường dẫn nào. – poke

+0

@Mat Đôi khi tôi đi qua các đường dẫn đầy đủ đến các tệp nằm trong kho lưu trữ của tôi. Tôi không muốn phải fiddle xung quanh chọn phần chính xác của con đường để diff chúng, tôi chỉ muốn nhấp đúp chuột vào thiết bị đầu cuối để chọn toàn bộ filepath, dán nó trở lại và thêm một 'git diff' tại đầu dòng. Đó là nhanh hơn nhiều. –

Trả lời

0

Nếu bạn muốn phân biệt tệp bên ngoài repo git, bạn nên sử dụng công cụ khác như opendiff và so sánh tệp từ repo với tệp khác bên ngoài kho lưu trữ.

Bạn không thể so sánh tệp bên ngoài vì git không "nghĩ" trong tệp.

+0

Bạn có thể, chỉ cần chạy 'git diff --no-index - file1 file2' – knittl

13

Bạn đang sử dụng phiên bản git nào? Nó sẽ hoạt động bất kể định dạng của đường dẫn, nghĩa là:

cd git 
git diff -- git.c 
git diff -- ~/git/git.c 

Nhưng bạn phải ở trong kho lưu trữ git để làm việc này! Nếu bạn hoàn toàn cần lệnh git được thực hiện từ bên ngoài kho, sử dụng --work-tree--git-dir tắc:

git --work-tree=~/git --git-dir=~/git/.git diff -- git.c 
git --work-tree=~/git --git-dir=~/git/.git diff -- ~/git/git.c 
+1

phiên bản 1.7.0.5. Trong ví dụ của bạn, ~/git gốc của thư mục làm việc git của bạn? Tôi đã thử tất cả các đề xuất của bạn, nhưng tôi vẫn gặp lỗi tương tự. –

+0

@WillSheppard: yep '~/git' là thư mục cấp cao nhất chứa thư mục worktree và .git – knittl

+0

Git của tôi không hiểu' ~ 'trong' --work-tree'; Tôi đã phải sử dụng con đường đầy đủ. – sam

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