programing

Github 저장소에서 파일 가져오기 시도: "관련 없는 기록 병합 거부"

lastmoon 2023. 8. 15. 11:25
반응형

Github 저장소에서 파일 가져오기 시도: "관련 없는 기록 병합 거부"

저는 깃을 배우고 있고, 깃 커뮤니티 책을 따라가고 있습니다.

이전에 (오래 전에) Github에 몇 개의 파일과 함께 공개 저장소를 만들었습니다.현재 컴퓨터에 로컬 Git 저장소를 설치하고 일부 파일을 커밋했습니다.그런 다음 원격 포인팅을 Github 페이지에 추가했습니다.

[root@osboxes c]# git remote add learnc https://github.com/michaelklachko/Learning-C

그것은 성공적인 것 같았습니다.

[root@osboxes c]# git remote show learnc
* remote learnc
  Fetch URL: https://github.com/michaelklachko/Learning-C
  Push  URL: https://github.com/michaelklachko/Learning-C
  HEAD branch: master
  Remote branch:
    master tracked
  Local ref configured for 'git push':
    master pushes to master (local out of date)

이제 Github repo에서 컴퓨터로 파일을 다운로드하고 싶습니다.제가 한 일은:

[root@osboxes c]# git fetch learnc
[root@osboxes c]# git merge learnc/master
warning: refname 'learnc/master' is ambiguous.
Already up-to-date.

그러나 로컬 디렉터리에 새 파일이 없습니다.그것들을 어떻게 구할 수 있습니까?

저는 또한 이것을 하려고 했습니다.

[root@osboxes c]# git pull learnc master
From https://github.com/michaelklachko/Learning-C
 * branch            master     -> FETCH_HEAD
fatal: refusing to merge unrelated histories

BTW, 로컬로 마스터 브랜치에 있습니다(다른 브랜치가 없습니다).

[root@osboxes c]# git status
On branch master
nothing to commit, working directory clean

해라--allow-unrelated-histories

max630이 코멘트한 것처럼, 또는 여기서 설명한 것처럼 관련 없는 기록의 병합을 거부합니다.

git checkout master
git merge origin/master --allow-unrelated-histories

충돌을 해결한 다음

git add -A .
git commit -m "Upload"
git push

저는 사람들의 업무 문제를 차단하지 않는 것에 전적으로 찬성하지만, "push --force"나 "--allow_unrelated_histories"를 일반적인 해결책으로 새 사용자에게 가르쳐서는 안 된다고 생각합니다. 왜냐하면 처음에 왜 일이 제대로 작동하지 않는지 이해하지 못한 채 사용할 때 저장소에 심각한 혼란을 초래할 수 있기 때문입니다.

로컬 저장소에서 시작한 이런 상황에서 GitHub에서 작업을 공유할 원격을 만들고 싶을 때 주의해야 할 점이 있습니다.

새 온라인 리포지토리를 만들 때 "README로 리포지토리 초기화" 옵션이 있습니다.세부 인쇄를 읽으면 "기존 리포지토리를 가져오는 경우 이 단계를 건너뜁니다."라고 표시됩니다.

당신은 그 상자를 체크했을지도 모릅니다.마찬가지로, 초기 푸시를 시도하기 전에 온라인으로 추가/커밋을 수행했습니다.각 장소에서 고유한 커밋 기록을 생성하면 Nevermore의 답변에 언급된 특별한 허용량 없이는 조정할 수 없습니다(git은 사용자가 그런 식으로 운영되는 것을 원하지 않기 때문입니다).여기에 언급된 몇 가지 권장 사항을 따르거나, 다음 번에 일부 로컬 파일을 새 리모컨에 연결하려면 해당 옵션을 선택하지 마십시오. 이 옵션은 초기 푸시를 위해 원격을 깨끗하게 유지합니다.

참고: git + hub에 대한 저의 첫 경험은 이와 같은 문제에 부딪혀 무슨 일이 일어났고 왜 일어났는지 이해하기 위해 많은 것을 배운 것이었습니다.

분기에서 마스터라고 말하고 관련 없는 기록을 끌어다 허용합니다.

git pull origin master --allow-unrelated-histories

나를 위해 일했습니다.

(), 제하고 "Githubend", "readme"를 하는 것이 더을 알게 .git push -f내 버전을 새 루트 커밋으로 만드는 것.

저는 그것이 조금 덜 복잡하다는 것을 발견했고, 모호한 깃발을 기억할 필요가 없으며, 역사를 좀 더 깨끗하게 유지합니다.

가 경한우용을 했을 때.--allow-unrelated-histories이 명령은 충돌을 너무 많이 생성했습니다.제가 작업하지도 않은 파일에 충돌이 있었습니다.하려면 오를류극기위해하복위해▁to▁error" Refusing to merge unrelated histories"다음 rebase 명령을 사용했습니다.

git pull --rebase=preserve --allow-unrelated-histories

이 후 커밋되지 않은 변경 사항을 커밋 메시지와 함께 커밋합니다.마지막으로 다음 명령을 실행합니다.

git rebase --continue

그 후 작업 복사본이 원격 복사본으로 최신 상태가 되어 변경 사항을 이전과 같이 적용할 수 있었습니다.풀링 중 관련 없는 기록 오류가 더 이상 발생하지 않습니다.

다음 명령을 실행합니다.

git pull origin master --allow-unrelated-histories

병합 VIM이 열립니다.병합 메시지를 추가하고 다음을 수행합니다.

  1. ESC를 누릅니다.
  2. Shift + ';'를 누릅니다.
  3. 'w'를 누른 다음 'q'를 누릅니다.

그리고 당신은 가도 좋습니다.

제 경우에도 같은 문제가 발생했습니다. 특히 Git 저장소를 원격으로 추가한 후 첫 번째 꺼내기 요청을 시도했습니다.다음 오류가 발생했습니다.

fatal: refusing to merge unrelated histories on every try

--allow-unrelated-histories 명령을 사용합니다.완벽하게 작동합니다.

git pull origin branchname --allow-unrelated-histories

언급URL : https://stackoverflow.com/questions/38255655/trying-to-pull-files-from-my-github-repository-refusing-to-merge-unrelated-his

반응형