태그 보관물: git-pull

git-pull

Github 리포지토리에서 파일을 가져 오려고 시도하는 경우 : “관련되지 않은 기록을 병합하지 않음” Fetch

나는 자식을 배우고 있으며 Git 커뮤니티 책을 따르고 있습니다.

이전에 (오래 전에) 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 저장소에서 컴퓨터로 파일을 다운로드하고 싶습니다. 나는 이걸했다:

[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은 관련이없는 내역을 병합하는 것을 거부합니다.


답변

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에 대한 나의 첫 경험은이 같은 문제에 부딪 히고 일어난 일과 이유를 이해하기 위해 많은 학습을하는 것입니다.


답변

한쪽 끝에 상당한 히스토리가없는 경우 (일명 github 쪽의 단일 readme 커밋 인 경우) readme를 로컬 리포지토리에 수동으로 복사하고 git push -f내 버전을 새로운 루트 커밋으로 만드는 것이 더 쉽다는 것을 종종 발견합니다. .

나는 약간 덜 복잡하고 모호한 플래그를 기억할 필요가 없으며 역사를 조금 더 깨끗하게 유지합니다.


답변

지점에서 마스터라고 말하고 관련이없는 내역을 가져 와서 허용

git pull origin master --allow-unrelated-histories

나를 위해 일했다.


답변

다음 명령을 실행하십시오.

git pull origin master --allow-unrelated-histories

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

  1. Esc 키를 누릅니다
  2. Shift + ‘;’을 누릅니다.
  3. ‘w’를 누른 다음 ‘q’를 누르십시오.

그리고 당신은 갈 수 있습니다.


답변

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

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

이 커밋 후에는 커밋 메시지와 함께 커밋되지 않은 변경 사항이 적용됩니다. 마지막으로 다음 명령을 실행하십시오.

git rebase --continue

그 후, 작업 사본이 원격 사본으로 최신 상태였으며 이전과 같이 변경 사항을 적용 할 수있었습니다. 당기는 동안 더 이상 관련이없는 이력 오류가 없습니다.