IntelliJ에서 Github와 연동 후, Commit과 Push를 하고 발생한 상황이다.
Git repository에 commit되지 않고 새로운 master branch를 생성하더니 merge도 안되고 승질만 빡빡 내게 되는 상황!
Git에서 default branch명을 master에서 main으로 바껴 시스템이 꼬이게 되었다는 글을 읽었다. 그러면 이름만 바꾸면 되지 않나?
IntelliJ에서 기본 branch명을 바꾸려고 git bach를 통해
git branch -m <변경 전 이름> < 변경 후 이름>
사용해 이름을 변경하였으나
(실제 error 문구와 다를 수 있음..)
refusing to merge unrelated histories 에러가 발생!
IntelliJ에서 바뀐 이름 때문에 에러가 발생했을 수도 있다는 생각에 Github에서 이름을 변경해보았다.
결과는
refusing to merge unrelated histories Again~~
IntelliJ에서 생성한 branch와 Github에서 생성한 branch의 기록이 달라서 발생하는 에러였기 때문에 두 히스토리를 병합해줘야 할 필요성이 있다고...?
아니 애초에 왜 이런 에러가..하라는대로 했을 뿐..
git bash에서 해당 프로젝트가 있는 폴더로 진입 후
git pull origin master --allow-unrelated-histories
를 진행했다.
그리고 인텔리제이에서 Merge를 했으나
...와이....
Rebase는 Merge와 같은 실행 결과를 가지지만 다른 커밋 히스토리를 가진다. Rebase는 base를 새롭게 설정한다는 의미!
Merge는 기존의 branch가 하나의 커밋으로 push되는 것이고, Rebase는 기존의 커밋이 그대로 병합되는 것을 말한다.
따라서 Merge는 합쳐지기 전의 브랜치의 히스토리가 합쳐져 브랜치에 남고 Rebase는 합쳐지기 전의 히스토리 그대로 올라가기 때문에 더 깔끔쓰~
rebase를 했는데 중간에 Merge도 진행됐다.
아무튼 성공.. 이렇게 찝찝한 성공은 첨이야..
Merge와 Rebase에 대한 추가 공부가 필요!!
Git Repository를 생성할 때, Github 내에서 README.md
, .gitignore
, LICENSE
파일을 생성했다.
로컬 환경에서 구성된 Repository에 Git Repository에 생성된 파일
들을 Pull하지 않고 Push를 먼저 진행하는 바람에 branch간에 커밋 히스토리가 일치하지 않아 발생된 문제였다.
어떤 파일도 추가하지 않고 IntelliJ에서 commit을 진행해보면
어떤 문제도 없이 commit과 push가 진행되었다.
Github 내에서 README.md
, .gitignore
, LICENSE
파일을 생성한 후, commit과 push를 진행해보면
commit과 push는 성공적으로 수행되었지만,
there isn’t anything to compare 문제가 발생한다!
간단간단!! main branch에 있는 것들을 pull로 가져오면 된다.
git pull origin main
하면 단순 해결 완!이면 좋겠지만..그렇게 쉬웠다면 좋았겠지만...
🥺 해결 방안 모색 2번에 해답이 있었다.
다른 히스토리를 가지고 있고, 서로 관련이 없기 때문에 단순하게 git pull origin main
만 하면 해당 명령을 허용하지 않는다. 따라서 이 허용 제한을 무력화해야 한다.
💡
git pull origin main --allow-unrelated-histories
Git Repo
와Local Repo
에 공통되게 .gitignore
이 있었기 때문에 pull을 하면서 자동적으로 Merge가 진행된다.
하지만 두 레포지토리는 서로 관련이 없는 히스토리를 강제로 Merge한 것이기 때문에 혹시 모를 상황을 대비해 자동 Merge가 진행되지 않는다.
Merge Comfilcts 옆에 있는 Resolve
를 클릭하면 수동으로 Merge를 진행할 수 있다. 그리고 다시 Commit과 push를 진행하면 된다.
이제 다시 Github를 확인해보면 Pull request를 할 수 있게 되었다!!!
모두 잘 완료된 것을 확인할 수 있다.