source

git --git-timeout이 예상대로 작동하지 않습니다.

manycodes 2023. 7. 15. 10:20
반응형

git --git-timeout이 예상대로 작동하지 않습니다.

현재 있는 디렉터리와 다른 디렉터리에서 git를 실행하려고 합니다.예를 들어 다음과 같습니다.

cd /home/domain/
git status << runs perfect ie
# On branch master
# Your branch is ahead of 'origin/master' by 6 commits.

그래서 이제 다른 디렉토리에서 이 명령을 실행하고 싶습니다.--git-dir선택.

내가 들어간다고 치자구요.root/다음을 시도해 보십시오.

git --git-dir="/home/domain/" status
## Error 
fatal: Not a git repository: '/home/domain/'

저는 또한 그것을 포함시키려고 노력했습니다..git폴더, 즉

git --git-dir="/home/domain/.git/" status

그러나 이것은 루트에서 git를 실행하려고 하는 것처럼 보입니다. 즉, 내 도메인 폴더에서 모든 것을 삭제하고 루트에 모든 것을 추가하는 것입니다.

누군가 제가 무엇을 잘못하고 있는지 조언해주길 바랍니다.

working dir도 정의해야 합니다.헷갈리긴 하지만 유연성 문제입니다.

git --git-dir=/mycode/.git --work-tree=/mycode status

당신은 여기서 조금 더 읽을 수 있습니다.

Git 1.8.5(다음 주 출시 예정)부터는 훨씬 더 간단해질 것입니다.

 git -C "/home/domain/" status

설정할 필요 없음--git-dir그리고.--work-tree더 이상!

그러나 OmarL논평에서 언급한 바와 같이:

는 것을 알게 되었습니다.-C와 완전히 동등하지는 않습니다.--git-dir --work-tree,왜냐면-C 는 환경 변수를 재정의하지 않습니다.


Nazri Ramliy의 commit 44e1e4를 참조하십시오.

현재 디렉터리를 떠나지 않고 다른 디렉터리에서 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

위에서 언급한 내용을 보면 여전히 문제가 발생하고 있는 것 같습니다.

root@erx [/]# git --git-interval=/home/domain/.git --work-tree=/home/domain/ pull origin 마스터fatal: /usr/local/libexec/git-core/git-timeout은 작업 트리 없이 사용할 수 없습니다.

당신이 이걸 실행하려고 하는 것처럼 들리네요.crontab뭐 그런 거.를 사용하는 것이 더 나을 수 있습니다.cd먼저 작업 디렉토리로 전환합니다.예:

root@erx [/]# (cd /home/domain &&git 풀 오리진 마스터)

이것은 일시적으로 (괄호 안에서) 현재 디렉토리를 (괄호 안에서) 변경합니다./home/domain그리고 나서 뛰어요.git pull origin master명령이 완료된 후 현재 디렉토리는 명령 이전의 디렉토리로 유지됩니다.

git --git-dir="/home/domain/" status
## Error 
fatal: Not a git repository: '/home/domain/'

Git 2.26(2020년 1분기)을 사용하면 문서가 더 명확해집니다.

위치 지정의 한 가지 효과GIT_DIR는 (환경 변수 또는 "와 함께)입니다.git --git-dir=<where> cmd옵션)는 리포지토리 검색을 비활성화하는 것입니다.

새로운 사용자가 혼동되는 경우가 많기 때문에 문서에서 이 문제가 좀 더 강조되었습니다.

헤바 왈리()HebaWaly82ad54(2020년 1월 30일)를 참조하십시오.
(주니오 C 하마노에 의해 합병 -- -- 2020년 2월 12일 17e4a1b 커밋에서)

git--git-message에 대한 문서 업데이트

사인 오프 바이: 헤바 왈리
도우미: 하마노 주니오

git --git-dir <path>약간 혼란스럽고 사용자가 예상하는 대로 작동하지 않는 경우가 있습니다.

를 들어,가 " " 를 실행할 경우, " 는 " " 입니다.git --git-dir=<path> status 한합니다.git 저 장 검 알 색 리 작 디 터 할 다 트 니 합 당 를 리 작 업 에 리 렉 는 업 현 재 의 사 자 소 용 않 지 한 하 정 는 지 도 로 고 별 건 즘 뛰 너 을 고 ▁to ▁g ▁the ▁tree it ▁work g ▁directory 다 니 '
이 할당이 잘못되면 출력이 사용자의 예상과 일치하지 않습니다.

이 패치는 설명서를 더 명확하게 업데이트합니다.

따라서 현재 설명서에는 다음이 포함됩니다.

--git-dir=<path>:

경로를 합니다("")..git디렉토리)를 선택합니다.
이 기능은 다음을 설정하여 제어할 수도 있습니다.GIT_DIR환경 변수입니다.
현재 작업 디렉토리에 대한 절대 경로 또는 상대 경로일 수 있습니다.

옵션을 사용하여 "".git 디렉토리의 위치 지정(또는GIT_DIR variable는 "경수가환변있해다검찾리리토니제합색을포지는으려는를디리렉터▁"▁▁environ다▁turns▁a)▁▁tries니▁that해"가 있는 디렉터리를 찾으려는 검색을 합니다..git하위 디렉터리(이것이 저장소 및 작업 트리의 최상위 수준을 검색하는 방법)이며, Git에게 사용자가 작업 트리의 최상위 수준에 있음을 참조하십시오.

당신이 트리의 에 있지 , 합니다. 약당 작 트 신 에 게 않 작 다 트 은 당 최 합 알 의 리 위 다 신 니 상 야 어 위 만 주 려 치 를 면 업 지 있 이 에 리 터 업 렉 리 디 최 의 상 위 ▁the it ▁if ▁with ▁g , ▁tell ▁of ▁is 합 만 it ▁you --work-tree=<path> 옵또(으)로 표시)GIT_WORK_TREE에 대한 설명합니다.

언급URL : https://stackoverflow.com/questions/1386291/git-git-dir-not-working-as-expected

반응형