다른 폴더에서 git "log"명령 사용


128

폴더 A (git 프로젝트)에 PHP 파일이 있습니다. 이 PHP 파일에서 "git log"를 실행하고 싶지만 폴더 B에 대해서는 폴더 B가 다른 git 프로젝트입니다 (로그는 A와 B간에 다릅니다).

쉘 명령으로 어떻게 할 수 있습니까?


3
cd /other/dir && git log && cd -bash 쉘에서?
takeshin

1
git 1.8.5 (Q4 2013)를 사용하면 설정하는 대신 다른 선택을 할 수 있습니다 --git-dir. 아래 내 답변 참조
VonC

답변:


189

에서 man git:

--git-dir명령을 전달하기 전에 매개 변수를 사용하여이를 수행 할 수 있습니다 .

git --git-dir /foo/bar/.git log

( .git디렉토리 지정 이 필요합니다.) 문서에서 :

--git-dir=<path>

저장소 경로를 설정하십시오. GIT_DIR환경 변수 를 설정하여 제어 할 수도 있습니다 . 현재 작업 디렉토리에 대한 절대 경로 또는 상대 경로 일 수 있습니다.


26
.git디렉토리 를 참조해야합니다 . 시도해보십시오 git --git-dir=/foo/bar/.git log.
mipadi

6
죄송합니다. --git-dir과 디렉토리 이름 사이에 =를 넣지 마십시오. 그래서이된다 자식 --git-DIR / foo는 / 바 로그
rgngl

23
경고! 이 접근 방식은 log. 시도 git --git-dir /foo/someclone/.git status-자식은 완전히 혼란스러워합니다. -C아래에 언급 된대로 권장 합니다.
Air

"--git-dir"문자열이 포함 된 git 도움말 페이지를 아직 보지 못했습니다. : '(
thinsoldier

1
@thinsoldier man git는 내 시스템 (2.3.5)에서 수행합니다. 그러나 @VonC 답변은 훨씬 더 잘 작동합니다.
Calimo 2015

145

자식 1.8.5 (Q4 2013) , 대신 설정의 또 다른 선택의 여지가됩니다 --git-dir. 폴더 에서
실행하려면 다음 git logB입력하십시오.

git -C B log

마찬가지로 " make -C <directory>", " git -C <directory> ..."다른 작업을 수행하기 전에 거기 가서 힘내을 알려줍니다 .


참조 44e1e4 커밋 에 의해 Nazri Ramliy :

현재 디렉토리를 떠나지 않고 다른 디렉토리에서 git 명령을 호출하려면 더 많은 키 누르기가 필요합니다.

  1. (cd ~/foo && git status)
    git --git-dir=~/foo/.git --work-tree=~/foo status
    GIT_DIR=~/foo/.git GIT_WORK_TREE=~/foo git status
  2. (cd ../..; git grep foo)
  3. for d in d1 d2 d3; do (cd $d && git svn rebase); done

위에 표시된 방법은 스크립팅에는 허용되지만 빠른 명령 줄 호출에는 너무 복잡합니다.

이 새로운 옵션을 사용하면 더 적은 키 입력으로 위의 작업을 수행 할 수 있습니다.

  1. git -C ~/foo status
  2. git -C ../.. grep foo
  3. for d in d1 d2 d3; do git -C $d svn rebase; done

19
이것은 훨씬 더 안정적인 접근 방식이며 log.
Air

와우, 맨 페이지에는 아무것도 없습니다! 부끄러운 일입니다. (좋아, 이제 2.7 man 페이지에 추가 된 것을 볼 수있다)
akostadinov

슬프게도 이것은 -R상대 경로를 엉망으로 만들기 때문에 Mercurial의 옵션 만큼 좋지 않습니다 . 예를 들어, 내가 입력 git -C subdir log subdir/myfile하면 오류가 발생합니다 (파일을 찾기 때문에 subdir/subdir/myfile).
jwd

: --git-dir은이 같은 것을 할 때보다 간편한이다for p in (find . -type d -name ".git"); do git --git-dir $p ...; done
shabunc

1
@jwd : 그게 어떻게 문제인지 잘 모르겠어요? 당신이 인용 한 것은 내가 기대할 수있는 정확한 행동이며, git그것이 나보다 더 영리하다고 생각하고 싶지 않을 것 입니다. 내가 '디렉토리 X에서 실행'이라고 말하면 '가끔 예외를 제외하고 다른 일을하라'는 의미가 아닙니다.
underscore_d
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.