2012-03-12 22 views
9

pwd là "thư mục làm việc hiện tại". Đây là tình huống.git pull cho một kho lưu trữ cục bộ tại vị trí được chỉ định (thay vì pwd)

pwd:   /path/to/pwd/ 
git repository: /repo/path/.git/ 

Tôi muốn thực hiện lệnh kéo git từ gốc nhưng không thay đổi thư mục hiện tại của mình.

Để làm rõ chỉ nhiều hơn một chút trong trường hợp tôi không đủ rõ ràng, đây là kết quả tôi muốn, nhưng tôi muốn làm điều đó với một lệnh thay vì phải thay đổi thư mục:

$ cd /repo/path 
$ git pull origin master 
$ cd - 
+0

Trường hợp sử dụng cho điều này là gì? (Tôi chỉ tò mò.) – KajMagnus

+0

@KajMagnus Điều này đã hơn 5 năm trước, tôi thành thật không thể nhớ. Có lẽ một cái gì đó như muốn cập nhật repo với một lớp lót để tôi có thể sử dụng '^ r' để chạy nó liên tục khi cần thiết, và không làm lộn xộn chồng thư mục vì tôi thường sử dụng' pushd', 'popd' và' cd -'. – Matthew

+1

Bản sao có thể có của [git --git-dir không hoạt động như mong đợi] (http://stackoverflow.com/questions/1386291/git-git-dir-not-working-as-expected) – pjgranahan

Trả lời

18
git --work-tree=/repo/path --git-dir=/repo/path/.git pull origin master 
+0

Điều này khá khó áp dụng khi nó đứng. Bạn có thể cung cấp một ví dụ với một repo công cộng? – Cognitiaclaeves

+0

@Cognitiaclaeves, không chắc chắn ý của bạn là "khó áp dụng"? Chỉ cần thử nó và nó "chỉ làm việc". Nó sẽ làm việc với bất kỳ repo bạn có quyền truy cập quá công cộng hay không. –

4

bash -c "cd/repo/path; git pull origin master"

+0

Có thực sự không có tùy chọn git cho điều này? Git đang bùng nổ với chức năng, có vẻ như khó tin rằng bạn PHẢI có thư mục làm việc của bạn ở vị trí kho lưu trữ hoặc thư mục con của nó. – Matthew

+0

Ồ, tôi không biết. Nếu có một cách tôi là tất cả tai! :) Tôi chỉ muốn cung cấp cho bạn một lớp lót. – sethcall

+0

không cần 'bash -c', bạn có thể sử dụng' (danh sách) 'để thực thi danh sách trong một vỏ con:' (cd/repo/path; git pull origin master) ' –

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