문제

원격 저장소를 설정하고 새로운 변경 사항을 푸시 할 수 있지만 가져올 수는 없습니다. 항상 (다소 비밀스러운) 오류 메시지를 얻습니다.

fatal: Refusing to fetch into current branch refs/heads/master of non-bare repository
fatal: The remote end hung up unexpectedly

무슨 뜻인가요? 페치를 활성화하려면 어떻게해야합니까?

(이 원격 저장소는 백업 repo로만 사용되므로 현지 저장소의 정확한 사본이어야합니다. 왜 내가 그것을 푸시 할 수는 있지만 그것을 가져 오지 않는지 이해할 수 없습니다 ...)

내 구성은 다음과 같습니다.

[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 깃발. 에서 문서:

-유
-업데이트 헤드 -ok
기본적으로 Git Fetch는 현재 지점에 해당하는 헤드 업데이트를 거부합니다. 이 플래그는 수표를 비활성화합니다. 이것은 Git Pull이 Git Fetch와 통신하기위한 내부 용도로 순전히, 그리고 자신의 도자기를 구현하지 않는 한 사용해서는 안됩니다.

경우에 따라 우리는 자체 도자기 명령 (예 : 자동화 및 툴링)을 구현하려고합니다.

또한 이것은 당신이있는 경우에도 효과가 있습니다 주인 지점과 최신 시도를 원합니다

git 당김 원산지 주인

리포지토리를 가져 오는 대신 리포지토리를 무리하게 복제했을 때이 문제가 있었기 때문에 두 저장소가 마스터가되었습니다. 원격 저장소에서 작업을 수행하지 않은 경우 다음과 같이 기본 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이 올바른 로컬 디렉토리로 가져 오려고한다고 확신합니까?

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

  1. GIT를 실행하기 전에 프로그래밍 언어가 제공 한 옵션을 사용하여 올바른 작업 디렉토리를 설정하십시오.
    (C# 예제, 그것이 내가 사용하는 것이기 때문에)

  2. 항상 통과하십시오 그만큼 -C 매개 변수 로컬 리포로 디렉토리를 지정하려면 git.


C# 코드에서 GIT 실행 파일을 호출하는 프로젝트가 있으며 실수로 설정하는 것을 잊어 버렸을 때 질문과 동일한 오류 메시지를 받았습니다. -C parameter.

치명적 : 현재 지점 Refs/Heads/Branchname으로 가져 오는 것을 거부합니다.

로컬로 분기 이름을 만들고 명령을 실행했습니다. "Git Fetch 업스트림 풀/ID/헤드 : BranchName"그리고 얻었다 치명적 : 현재 지점 Refs/Heads/Branchname으로 가져 오는 것을 거부합니다.

그런 다음 지점을 삭제하고 다시 동일한 CMD를 잘 호출합니다.

실제로 나는 풀 요청 브랜치를 체크 아웃하고있었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top