github과 프로젝트 연결

2019-12-04

보통 github 개인 repository에 프로젝트를 연결해서 사용할 떄 소스트리를 사용하였다.
그러다보니 react-create-app과 같이 프로젝트 생성이 바로 되는 프로젝트들은 github에 repository를 생성하게 되면
폴더가 2개가 생기는 이슈가 있었다.
그럴 때마다 해당 폴더를 옮기거나 하는식으로 했었는데 이번에 명령어를 사용하여 작업을 해보았다.

1. github repository 생성

github 페이지로 가서 repository를 생성한다.

2. 로컬에서 프로젝트 경로로 들어간다 (명령어)

1
2
3
4
5
6
7
$ git init // .git 디렉토리 생성

$ git add .

$ git commit -m "first commit"

$ git remote add origin [github주소]



이렇게 순차적으로 명령어를 치다보면 마지막에 github과 연결하는 부분에서 해당 에러가 발생한다.

1
fatal: remote origin already exists 에러

해당 에러는 이미 remote origin이 존재하기 때문이라고 한다.
그렇기 때문에 이미 존재하는 remote origin을 삭제하고 다시 github과 연결을 한다.

1
$ git remote rm origin



그리고 난뒤 파일을 작업되어 있는 파일을 푸시하려고 하면

1
$ git push -u origin master



아래와 같이 에러가 발생한다.

1
2
3
4
5
! [rejected]        master -> master (non-fast-forward)
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.



pull을 받을게 있다는 것이다.
git pull origin 브랜치명 명령어로 pull을 받으려고 하면
아래와 같이 에러가 발생한다.

1
fatal: refusing to merge unrelated histories

이 이슈는 이미 존재하는 두 프로젝트이 기록이 있어 merge를 하라는 뜻이다.

1
$ git pull origin 브런치명 --allow-unrelated-histories

--allow-unrelated-histories 명령 옵션은 이미 존재하는 두 프로젝트의 기록(history)을 저장하는 드문 상황에 사용된다고 한다.
즉, git에서는 서로 관련 기록이 없는 이질적인 두 프로젝트를 병합할 때 기본적으로 거부하는데, 이것을 허용해 주는 것이다.

그러면 이제 git push가 가능하다.