Bắt đầu từ git 1.8.5 (Q4 2013) , bạn sẽ có thể "sử dụng lệnh Git, nhưng không phải thay đổi thư mục".
Giống như " make -C <directory>
", " git -C <directory> ...
" bảo Git đến đó trước khi làm bất cứ điều gì khác .
Xem cam kết 44e1e4 của Nazri Ramliy :
Phải mất nhiều lần nhấn để gọi lệnh Git trong một thư mục khác mà không cần rời khỏi thư mục hiện tại:
(cd ~/foo && git status)
git --git-dir=~/foo/.git --work-tree=~/foo status
GIT_DIR=~/foo/.git GIT_WORK_TREE=~/foo git status
(cd ../..; git grep foo)
for d in d1 d2 d3; do (cd $d && git svn rebase); done
Các phương thức hiển thị ở trên có thể chấp nhận được đối với kịch bản nhưng quá cồng kềnh đối với các yêu cầu dòng lệnh nhanh.
Với tùy chọn mới này, những điều trên có thể được thực hiện với ít lần nhấn phím hơn:
git -C ~/foo status
git -C ../.. grep foo
for d in d1 d2 d3; do git -C $d svn rebase; done
Kể từ Git 2.3.4 (tháng 3 năm 2015) và cam kết 6a536e2 của Karthik Nayak ( KarthikNayak
) , git
sẽ coi " git -C '<path>'
" là một no-op khi <path>
trống.
' git -C ""
' chết một cách vô ích với lỗi " Cannot change to ''
", trong khi đó vỏ xử lý cd "" 'là không có.
Lấy hành vi của cái vỏ làm tiền lệ, dạy git
cách coi -C "" là không có gì cả.
4 năm sau, tài liệu Git 2.23 (quý 3 năm 2019) git -C ""
hoạt động và không thay đổi thư mục
Nó đã hoạt động như vậy kể từ 6a536e2 ( git
: coi " git -C '<path>'
" là không hoạt động khi <path>
trống, 2015 / 03-06, Git v2.3.4).
Điều đó có nghĩa là tài liệu bây giờ (cuối cùng) bao gồm:
Nếu ' <path>
' có mặt nhưng trống, ví dụ -C ""
, thì thư mục làm việc hiện tại không thay đổi.
Bạn có thể thấy git -C
được sử dụng với Git 2.26 (Q1 2020), làm ví dụ.
Xem cam kết b441717 , cam kết 9291e63 , cam kết 5236fce , cam kết 10812c2 , cam kết 62d58cd , cam kết b87b02c , cam kết 9b92070 , cam kết 3595d10 , cam kết f511bc0 , cam kết f6041ab , cam kết f46c243 , cam kết 99c049b , cam 3.738.439 , cam 7.717.242 , cam kết b8afb90 (ngày 20 tháng 12 năm 2019) bởi Denton Liu ( Denton-L
) .
(Được hợp nhất bởi Junio C Hamano - gitster
- trong cam kết 381e8e9 , ngày 5 tháng 2 năm 2020)
t1507
: nội tuyến full_name()
Đã ký tắt: Denton Liu
Trước đây, chúng tôi đã chạy test_must_fail full_name
. Tuy nhiên, test_must_fail
chỉ nên được sử dụng trên các lệnh git.
Nội tuyến full_name()
để chúng ta có thể sử dụng trực tiếp test_must_fail
trên git
lệnh.
Khi full_name()
được giới thiệu trong 28fb84382b ("Giới thiệu <branch>@{upstream}
ký hiệu", 2009-09-10, Git v1.7.0-rc0 - merge ), git -C
tùy chọn này chưa khả dụng (vì nó được giới thiệu trong 44e1e4d67d (" git
: chạy trong một thư mục đã cho với tùy chọn -C ", 2013-09-09, Git v1.8.5-rc0 - hợp nhất được liệt kê trong lô số 5 )).
Do đó, chức năng của trình trợ giúp đã loại bỏ nhu cầu thủ công cd
mỗi lần. Tuy nhiên, vì git -C
hiện đã có sẵn, chúng tôi chỉ có thể sử dụng thay thế và nội tuyến full_name()
.