현재 브랜치로 가져 오기를 거부하는 자식
원격 저장소를 설정하고 새 변경 사항을 푸시 할 수 있지만 여기에서 가져올 수 없으며 항상 (아주 알 수없는) 오류 메시지가 나타납니다.
fatal: Refusing to fetch into current branch refs/heads/master of non-bare repository
fatal: The remote end hung up unexpectedly
무슨 뜻이에요? 가져 오기를 활성화하려면 어떻게해야합니까?
(이 원격 리포지토리는 백업 리포지토리로만 사용되므로 내 로컬 리포지토리의 거의 정확한 복사본이어야합니다. 푸시 할 수 있지만 가져 오지 못하는 이유를 정말로 이해할 수 없습니다 ...)
내 구성은 다음과 같습니다.
[remote "origin"]
url = ssh://blablablah
fetch = +refs/*:refs/*
mirror = true
당신이하려는 것은 당신이 일하고있는 브랜치를 가져 오는 것입니다. 즉, 당신은 있는 마스터 지점에 당신은 그것을 업데이트하려고합니다. 그건 불가능하다. remotes/*
브랜치 를 업데이트 한 다음 로컬 브랜치로 가져 오는 것이 더 일반적 입니다. 당신이 원하는 것은 아마도
git remote add otherrepo thehost:/the/path.git
으로 가져올 저장소를 설정합니다 remotes/otherrepo/*
. git fetch otherrepo
트릭을해야합니다. Alternativeley, 당신은 수동으로 편집 할 수 있습니다 .git/config
및 설정을 fetch
같은 리모트를 위해 refs/heads/*:refs/remotes/otherrepo/*
.
특히 현재 브랜치로 가져 오기를 원하기 때문에 누군가가 이것을 발견하는 경우 --update-head-ok
플래그를 사용할 수 있습니다 . 에서 워드 프로세서 :
-u
--update-head-ok
기본적으로 git fetch는 현재 브랜치에 해당하는 헤드 업데이트를 거부합니다. 이 플래그는 검사를 비활성화합니다. 이것은 순전히 git pull이 git fetch와 통신하기위한 내부 사용을위한 것이며, 자신의 Porcelain을 구현하지 않는 한이를 사용해서는 안됩니다.
어떤 경우에는 자동화 및 툴링과 같은 자체 도자기 명령을 구현하고 싶습니다.
또한 이것은 마스터 브랜치에 있고 최신 버전을 얻으려면 이것을 시도하십시오.
git pull origin master
저장소를 가져 오는 대신 생각없이 복제하여 두 저장소가 모두 마스터가되었을 때이 문제가 발생했습니다. 원격 저장소에 대한 작업을 수행하지 않은 경우 다음과 같이 기본 git 명령으로 문제를 해결할 수 있습니다. (1) 원격 저장소 삭제, (2) 원격 저장소가 있던 위치에 로컬 저장소 복사, (3) 삭제 로컬 하나, (4) 다음을 사용하여 로컬 저장소를 설정하십시오.
git init; git fetch $REMOTE_GIT_REPOSITORY_URL
다음 git pull
과 git push
옳은 일을 할 것입니다. git remote
Michael의 더 효율적이고 원칙적인 대답에 따라 피하는 것의 장점은 분기 추적의 의미에 대해 생각할 필요가 없다는 것입니다.
나도 같은 문제를 안고있어. 먼저 이것을 사용하여 가져 오려고합니다.
git fetch [remote_name] [branch_name]
나는 당신이 언급 한 것과 같은 문제가있었습니다. 그 후이 간단한 명령을 시도했습니다.
git pull [remote_name] [branch_name]
메모는 변경 사항을 가져오고 병합합니다. 터미널을 사용하는 경우 파일을 열고 메시지를 커밋해야합니다. 이 메시지로 최신 커밋을 푸시합니다. 이 명령을 시도하면 마지막으로 요청을 푸시 할 수 있습니다.
git push [remote_name] [branch_name_local]
실제로 명령 줄에 Git 명령을 입력하고 있습니까? 아니면 자체 코드에서 Git 실행 파일을 실행하고 있습니까?
코드에서 실행하는 경우 Git이 올바른 로컬 디렉터리로 가져 오려고하는 것이 확실합니까?
이를 수행하는 두 가지 가능한 방법이 있습니다.
프로그래밍 언어에서 제공하는 옵션을 사용하여 Git을 실행하기 전에 올바른 작업 디렉터리를 설정합니다
( C # example , 이것이 제가 사용하고 있기 때문입니다).
C # 코드에서 Git 실행 파일을 호출하는 프로젝트가 있는데 실수로 .NET Framework를 설정하는 것을 잊었을 때 질문과 같은 오류 메시지가 나타납니다 -C parameter
.
치명적 : 베어가 아닌 저장소의 현재 분기 참조 / 헤드 / BRANCHNAME로 가져 오기 거부
로컬에서 브랜치 BRANCHNAME을 생성 한 다음 " git fetch upstream pull / ID / head : BRANCHNAME " 명령을 실행 하고 치명적 : 비 베어 저장소의 현재 브랜치 refs / heads / BRANCHNAME로 가져 오기 거부
그런 다음 분기를 삭제하고 동일한 cmd를 다시 호출합니다.
사실 저는 풀 리퀘스트 브랜치를 확인하고있었습니다.
참조 URL : https://stackoverflow.com/questions/2236743/git-refusing-to-fetch-into-current-branch
'IT TIP' 카테고리의 다른 글
Java 애플릿을 어떻게 디버깅합니까? (0) | 2020.12.30 |
---|---|
텍스트 구조로 사용자의 기분을 추측 할 수 있습니까? (0) | 2020.12.30 |
왜 어떤 사람들은“const T &”보다“T const &”를 선호합니까? (0) | 2020.12.30 |
R 패키지의 네임 스페이스 (0) | 2020.12.30 |
"-fno-exceptions"를 사용하면 "new T"는 어떻게됩니까? (0) | 2020.12.30 |