git init 이후의 unrelated histories로 막힌 경우의 원인과 대처법
결론
git init
한 직후에 push 할 수 없는 경우는 --allow-unrelated-histories
옵션을 붙여 merge 하고 나서 push 한다.
어떤 경위였습니까?
1. 로컬 리포지토리를 새로 만든
로컬 리포지토리를 새로 만들고 첫 번째 커밋을 수행합니다.
$ git init
$ git add .
$ git commit -m 'initial commit'
2. GitHub에서 원격 리포지토리를 만들었습니다.
로컬 리포지토리와 같은 이름의 리모트 리포지터리를, GitHub 상에서 새롭게 만듭니다. 이 때 .gitignore
를 추가합니다.
3. 오류가 발생하여 푸시할 수 없음
로컬 리포지토리에 원격 리포지토리를 등록합니다.
$ git remote add origin https://github.com/hajime-f/sample.git
이 후 push 하면 다음과 같은 에러가 돌아왔습니다.
$ git push origin master
To https://github.com/hajime-f/sample.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://github.com/hajime-f/sample.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
에러 메세지로 말한 대로 pull 했을 경우, 이번에는 다음과 같은 에러가 돌아와서 pull 할 수 없었습니다.
$ git pull origin master
From https://github.com/hajime-f/sample
* branch master -> FETCH_HEAD
fatal: refusing to merge unrelated histories
4. --allow-unrelated-histories 옵션으로 merge 하면 push 할 수 있었다
--allow-unrelated-histories
옵션을 붙여 merge 합니다.
$ git merge --allow-unrelated-histories origin/master
Merge made by the 'recursive' strategy.
.gitignore | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 129 insertions(+)
create mode 100644 .gitignore
그러면 제대로 푸시할 수 있었습니다.
$ git push origin master
...
remote: Resolving deltas: 100% (2170/2170), done.
To https://github.com/hajime-f/sample.git
f86aa3c..1a66967 master -> master
무엇이 원인 이었습니까?
공통의 오리지널(이력)로부터 분기한 브랜치가 존재해, 이것들이 pull 에 의해 merge 되는 것이 통상입니다.
그러나, 이번과 같이 git init
한 직후에서는, 로컬과 리모트로 공통의 오리지날이 존재하지 않기 때문에, 디폴트에서는 merge 가 기능하지 않습니다. 따라서 pull 하면 "unrelated histories"라고 에러가 나옵니다.
거기서, --allow-unrelated-histories
옵션으로 「굉장히 코타아 괜찮아!」라고 질타하면 merge 할 수 있습니다.
Reference
이 문제에 관하여(git init 이후의 unrelated histories로 막힌 경우의 원인과 대처법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hajime-f/items/9102da2090ee59398fbf
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
1. 로컬 리포지토리를 새로 만든
로컬 리포지토리를 새로 만들고 첫 번째 커밋을 수행합니다.
$ git init
$ git add .
$ git commit -m 'initial commit'
2. GitHub에서 원격 리포지토리를 만들었습니다.
로컬 리포지토리와 같은 이름의 리모트 리포지터리를, GitHub 상에서 새롭게 만듭니다. 이 때
.gitignore
를 추가합니다.3. 오류가 발생하여 푸시할 수 없음
로컬 리포지토리에 원격 리포지토리를 등록합니다.
$ git remote add origin https://github.com/hajime-f/sample.git
이 후 push 하면 다음과 같은 에러가 돌아왔습니다.
$ git push origin master
To https://github.com/hajime-f/sample.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://github.com/hajime-f/sample.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
에러 메세지로 말한 대로 pull 했을 경우, 이번에는 다음과 같은 에러가 돌아와서 pull 할 수 없었습니다.
$ git pull origin master
From https://github.com/hajime-f/sample
* branch master -> FETCH_HEAD
fatal: refusing to merge unrelated histories
4. --allow-unrelated-histories 옵션으로 merge 하면 push 할 수 있었다
--allow-unrelated-histories
옵션을 붙여 merge 합니다.$ git merge --allow-unrelated-histories origin/master
Merge made by the 'recursive' strategy.
.gitignore | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 129 insertions(+)
create mode 100644 .gitignore
그러면 제대로 푸시할 수 있었습니다.
$ git push origin master
...
remote: Resolving deltas: 100% (2170/2170), done.
To https://github.com/hajime-f/sample.git
f86aa3c..1a66967 master -> master
무엇이 원인 이었습니까?
공통의 오리지널(이력)로부터 분기한 브랜치가 존재해, 이것들이 pull 에 의해 merge 되는 것이 통상입니다.
그러나, 이번과 같이 git init
한 직후에서는, 로컬과 리모트로 공통의 오리지날이 존재하지 않기 때문에, 디폴트에서는 merge 가 기능하지 않습니다. 따라서 pull 하면 "unrelated histories"라고 에러가 나옵니다.
거기서, --allow-unrelated-histories
옵션으로 「굉장히 코타아 괜찮아!」라고 질타하면 merge 할 수 있습니다.
Reference
이 문제에 관하여(git init 이후의 unrelated histories로 막힌 경우의 원인과 대처법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hajime-f/items/9102da2090ee59398fbf
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(git init 이후의 unrelated histories로 막힌 경우의 원인과 대처법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hajime-f/items/9102da2090ee59398fbf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)