Programming

Git 저장소를 원격으로 추가하려고 할 때 "치명적 : git 저장소가 아님"수신

procodes 2020. 2. 21. 22:32
반응형

Git 저장소를 원격으로 추가하려고 할 때 "치명적 : git 저장소가 아님"수신


이 튜토리얼을 따라 Git을 소개합니다.

레포가 로컬 컴퓨터에 추가 될 때까지 모든 것이 잘 작동합니다.

git remote add nfsn ssh://USERNAME@NFSNSERVER/home/private/git/REPONAME.git

(USERNAME, NFSNSERVER 및 REPOAME를 올바른 이름으로 바꾼 후) 오류가 발생합니다.

fatal: Not a git repository (or any of the parent directories): .git

이 단계를 지나칠 수 있습니까?


이 리모컨을 추가 할 로컬 Git 리포지토리를 초기화 했습니까?

로컬 디렉토리에 .git폴더가 있습니까?

시도하십시오 git init.


현재 작업 디렉토리가 Git 리포지토리에 없을 때 Git 명령을 사용하려고하면이 오류가 발생합니다. 기본적으로 Git은 "프로젝트 디렉토리에 있지 않는 한 Git은 로그를 표시하지 않습니다"에 대한 대답에서.git 지적한 것처럼 저장소 디렉토리 (프로젝트 루트 내부?) 를 찾습니다 .

공식 Linux Kernel Git documentation 에 따르면 , GIT_DIR[환경 변수] .git가 기본적으로 디렉토리 (현재 작업 디렉토리에서?) 를 찾도록 설정되어 있습니다 .

경우 GIT_DIR환경 변수가 설정되어이 디폴트 대신에 사용할 수있는 경로를 지정 .git저장소의 기지를.

당신이 중 하나를해야합니다 cd저장소 / 작업 복사본으로, 또는 당신은 당신이 REPO을 저장할 디렉토리에 REPO를 초기화해야하는 경우에 처음에 저장소를 초기화하지 않았거나 복제 :

git init

또는 저장소를 복제

git clone <remote-url>
cd <repository>

내 문제는 내 OS의 일부 딸꾹질에 대해 로컬 저장소의 명령이 "치명적 : git 저장소 (또는 상위 디렉토리가 아님) : .git"로 끝나고 fsck 명령이 포함되었다는 것입니다.

문제가 비어있는 HEAD 파일 입니다.

.git / refs / heads에서 작업 한 실제 지점 이름을 찾을 수 있었고이 작업을 수행했습니다.

echo 'ref: refs/heads/ML_#94_FILTER_TYPES_AND_SPECIAL_CHARS' > .git/HEAD

효과가있었습니다.


참고 : 이것은 OP의 문제인 일반적인 문제에 대한 답변이 아니라이 오류 메시지가 나타날 수있는 다른 문제에 대한 답변입니다. 나는이 대답을 적어두기 위해 새로운 질문을하고 싶지 않다.

내가 가진 특정 충돌의 일부 손상으로 인해 상황이 발생했을 때 .git존재 했을 때 조차도이 오류가 발생했습니다 .

smar@aaeru ~/P/Nominatim> git status
fatal: Not a git repository (or any of the parent directories): .git
smar@aaeru ~/P/Nominatim [128]> ls .git
COMMIT_EDITMSG  config*  FETCH_HEAD  HEAD  index  logs/  modules/  objects/  ORIG_HEAD packed-refs

나는 실제로 보존해야 할 것이 없었기 때문에 더미 길을 가고 ...

smar@aaeru ~/P/Nominatim [128]> git init
Reinitialized existing Git repository in /home/smar/Projektit/Nominatim/.git/

또 예에 관해서는,하지만 작동하지 git log돌아갑니다 fatal: bad default revision 'HEAD'. 리모트는 했다 내가 한 있도록하지만이 git fetch --all다음 단지 git reset --hard origin/master의 repo 이전의 상태로 자신을 얻을 수 있습니다.

일부 않은 변경이있는 경우, 당신이 그들을 볼 수 있습니다 git status, git diff등등. 그런 다음 git diff yourfile > patch재설정을 실행하기 직전에.

적어도 나를 위해 reflog ( git reflog)가 완전히 사라졌습니다. 따라서 재설정을 수행하고 일부 변경을 방지하려는 경우 재설정 후 더 이상 되돌릴 수 있는지 확실하지 않습니다. 따라서 백업을 시도하기 전에 복제본을 복사하여 백업 할 수없는 모든 변경 사항이 있는지 확인하십시오.


파일 시스템에서 자식 프로젝트의 위치를 ​​옮긴 후에이 문제가 발생했습니다. git 명령을 실행할 때 오류가 발생했습니다. 예 :

$ git status
fatal: Not a git repository: /home/rospasta/path_old/gitprojecta/.git/modules/.travis

나는 /home/rospasta/path_old/gitprojecta/.travis/.git프로젝트의 이전 위치의 절대 경로에서 작성된 것을 발견했습니다 . 새 위치의이 경로를 수동으로 업데이트하면 문제가 해결되었습니다.

따라서 내 문제는 자식 문제 일 수도 있고 아닐 수도 있지만 HTH입니다.


$ git status
fatal: Not a git repository:

cmd 또는 git shell 또는 다른 터미널에 다음을 입력하십시오.

$ git init

명령 행 / CLI에서 현재 디렉토리가 저장소가 아닌 경우이 오류가 발생합니다. 따라서 먼저 저장소에 CD를 넣어야합니다.


특정 폴더로 가지 않는 것 같습니다. 예를 들어, bugsBunny라는 프로젝트에서 작업 중이고 d : / work : code 폴더에 저장되어 있다면 먼저 cd d : / work / code / bugsBunny를 사용하여 해당 폴더로 이동해야합니다. git 명령을 계속 사용할 수 있습니다.


이를 위해 bitbucket 명령에서 누락 된 하나의 명령을 입력해야합니다

git init을 시도하십시오.


다른 사람에게 도움이되는 경우 실수로 .git / objects /를 삭제 한 후이 오류 메시지가 나타납니다.

치명적 : 자식 저장소가 아니거나 부모 디렉토리가 아닙니다 : .git

그것을 복원하면 문제가 해결되었습니다.


필자의 경우 Tortoise SVN을 사용하고 동시에 Visual Studio GIT 기능을 사용하는 실수를 범했습니다. Visual Studio가 .git 폴더 내부의 HEAD 파일을 잠그도록 VS 또는 Tortoise가 리포지토리에 액세스 할 수 없으며 두 응용 프로그램 모두에서 "치명적인 : Not git repo ..."오류가 발생했습니다.

해결책:

  1. .git 폴더로 이동하여 "HEAD.lock"의 이름을 "HEAD"로 바꿉니다.
  2. 하나의 GIT 관리 응용 프로그램을 결정하고 다른 응용 프로그램을 만지지 마십시오.

아마도 너무 늦었지만 미래 방문자를 도울 수있는 또 다른 솔루션입니다. 먼저 이전 .git디렉토리를 삭제하십시오 -

rm .git

그런 다음 git repo를 다시 초기화하십시오.

git init

심지어 나는 같은 문제가 있었다. 나는 crontab을 사용하여 일주일의 근무일 17:55에 모든 코드를 내 자식 저장소에 백업하는 쉘 스크립트를 작성했습니다. cron의 로그를 보면서 위에서 언급 한 문제를 발견했습니다.

위의 문제는 gir 명령이 아닌 디렉토리 (즉, 작업 사본이 아닌 다른 디렉토리)에서 git 명령을 실행하려고 할 때만 발생합니다. 이 부가 해결하기 위해 -C <git dir>당신은 실행하는 자식 명령 git status이 될 것입니다 git -C /dir/to/git statusgit add -A됩니다 git -C /dir/to/git -A.


내 경우에는 Windows cmd를 사용하여 git 명령 (예 : git status)을 시도하는 동안 동일한 문제가 발생했습니다. 환경 변수에 https://windows.github.com/ 창에 git을 설치 한 후 "PATH"변수에 git의 클래스 경로를 추가하십시오. 일반적으로 git은 C : / user / "username"/ appdata / local / git / bin에 설치되며 환경 변수의 PATH에 이것을 추가하십시오.

그리고 cmd에서 하나 더 git 저장소로 이동하거나 CD가 클론이 창에있는 곳으로 이동하면 일반적으로 github cd Document / Github / yourproject 아래의 문서에 저장됩니다.

감사합니다


아래 오류는 Gits가 현재 디렉토리에서 .git 파일을 찾지 못해 오류 메시지를 던지는 것처럼 보입니다.

따라서 git에서 코드를 체크 아웃 한 디렉토리로 디렉토리로 변경 한 다음이 명령을 실행하십시오.

  • $ git checkout

로컬 저장소가 저장된 소스 폴더로 이동하십시오 (예 : 광산은 c : / GitSource에 있으며 폴더에서 마우스 오른쪽 버튼을 클릭하고 git bash here을 클릭 한 다음 git status ...를 클릭하십시오.)


나에게 이것은 내 .git/에서 잘못된 소유권과 관련이 있었다 . root소유 .git/HEAD하고 .git/index, jenkins사용자가 작업을 실행 하지 못하게합니다 .


GIT_DIR을 설정 해제해야합니다. unset GIT_DIR


필자의 경우 Windows의 git이 어느 시점부터 드라이브 문자에 대해 대소 문자를 구분한다는 것을 알았습니다.

Windows CLI 명령에서 git 바이너리를 업그레이드 한 후 작동하는 데 사용 된 명령이 중지되었습니다. 예를 들어 스크립트의 경로는 D : \ bla \ file.txt이고 git 명령은 d : \ bla \ file.txt 만 허용했습니다 .


git은 잘 작동했으며 갑자기이 fatal: Not a git repository (or any of the parent directories): .git메시지를 표시하기 시작했습니다 .

git 폴더에 무엇이 손상되었는지 확실하지 않기 때문에 git 폴더 git clone ** newfolder전체가 손상되었거나 오래된 폴더에 복사되어 git이 오류 메시지를 표시하기 전에 변경했습니다.

모든 것이 정상으로 돌아 왔고 git은 또한 변경되거나 준비되지 않은 파일을 인식했습니다.


.git/ORIG_HEAD및 다른 루트 .git repo 파일을 복원하십시오.

백업에서 복원 한 후이 오류가 발생했습니다. 분명히 .git 디렉토리 루트에 포함 된 파일이 대상으로 만들지 않았지만 모든 하위 폴더가 처음에는 그렇게 했으므로 처음에는 저장소가 손상되었다고 생각했습니다.

루트 파일을 복원하여 수정했습니다.


GitLab 인증 문제 후 Jenkins Git 플러그인 에서이 문제가 발생했습니다. Jenkins는 'hudson.plugins.git.GitException : [...] stderr : GitLab : 찾고있는 프로젝트를 찾을 수 없습니다. 치명적 : 원격 저장소에서 읽을 수 없습니다. '

그러나 Jenkins 상자 (명령 줄)에서 직접 'git clone'또는 'git fetch'를 수행하면 문제없이 작동했습니다.

특정 작업에 대한 Jenkins 작업 폴더에서 전체 / workspace 디렉토리를 삭제 하여 문제를 해결했습니다 . 예 :

rm -Rf $JENKINS_HOME/jobs/myJenkinsJob/workspace/

아마도 로컬 .git 폴더가 오래되었거나 손상 되었습니까?


권한 때문일 수도 있습니다. 소유자 / 그룹 권한을 확인하고 해당 데이터에 액세스 할 수있는 권한이 있는지 확인하십시오. 내 경우에는 소유권이 root : root로 설정된 리포지토리에서 "git status"를 실행할 때이 오류가 발생했습니다. 루트로 "git status"를 실행하면 문제가 해결되었습니다. 또는 사용자 / 그룹 소유권을 root : root로 설정하지 않으려면 액세스 권한이있는 대상에 저장소를 숨기십시오.

참고 URL : https://stackoverflow.com/questions/4630704/receiving-fatal-not-a-git-repository-when-attempting-to-remote-add-a-git-repo



반응형