IT TIP

현재 브랜치로 가져 오기를 거부하는 자식

itqueen 2020. 12. 30. 19:59
반응형

현재 브랜치로 가져 오기를 거부하는 자식


원격 저장소를 설정하고 새 변경 사항을 푸시 할 수 있지만 여기에서 가져올 수 없으며 항상 (아주 알 수없는) 오류 메시지가 나타납니다.

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 pullgit push옳은 일을 할 것입니다. git remoteMichael의 더 효율적이고 원칙적인 대답에 따라 피하는 것의 장점은 분기 추적의 의미에 대해 생각할 필요가 없다는 것입니다.


나도 같은 문제를 안고있어. 먼저 이것을 사용하여 가져 오려고합니다.

git fetch [remote_name] [branch_name] 

나는 당신이 언급 한 것과 같은 문제가있었습니다. 그 후이 간단한 명령을 시도했습니다.

git pull [remote_name] [branch_name]

메모는 변경 사항을 가져오고 병합합니다. 터미널을 사용하는 경우 파일을 열고 메시지를 커밋해야합니다. 이 메시지로 최신 커밋을 푸시합니다. 이 명령을 시도하면 마지막으로 요청을 푸시 할 수 있습니다.

git push [remote_name] [branch_name_local] 

실제로 명령 줄에 Git 명령을 입력하고 있습니까? 아니면 자체 코드에서 Git 실행 파일을 실행하고 있습니까?
코드에서 실행하는 경우 Git이 올바른 로컬 디렉터리로 가져 오려고하는 것이 확실합니까?

이를 수행하는 두 가지 가능한 방법이 있습니다.

  1. 프로그래밍 언어에서 제공하는 옵션을 사용하여 Git을 실행하기 전에 올바른 작업 디렉터리를 설정합니다
    ( C # example , 이것이 제가 사용하고 있기 때문입니다).

  2. 항상 통과 매개 변수를 지역의 repo로 디렉토리를 지정 힘내에.-C


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

반응형