728x90
반응형
git으로 pull request 등의 협업 작업을 할 때, branch를 사용하는 것을 권장한다. 하지만 간단한 작업에서는 branch를 만들고 checkout 하는게 번거로워서, master branch 하나로만 작업하고 싶을 때가 있다. 그런데 master branch만으로 여러번의 pull request를 하게되면, commit이 중복되어 들어가게 된다. 본 문서에서는 위와 같은 일을 방지하기 위해서, fork한 repository를 원본 저장소와 동기화하는 방법에 대해 서술하였다.
upstream 등록
먼저 현재 등록된 remote 저장소를 확인한다.
$ git remote -v
origin https://github.com/MY_NAME/REPO_NAME.git (fetch)
origin https://github.com/MY_NAME/REPO_NAME.git (push)
위에서 보는 것과 같이 기본적으로 fork한 자신의 저장소를 clone하면, 자신의 저장소 주소만 origin에 등록되어있다. 여기에 다음 명령어를 통해 upstream에 원본 저장소 주소를 등록한다.
$ git remote add upstream https://github.com/REMOTE_NAME/REPO_NAME.git
등록을 했으니 다시 현재 등록된 저장소를 확인해본다.
$ git remote -v
origin https://github.com/MY_NAME/REPO_NAME.git (fetch)
origin https://github.com/MY_NAME/REPO_NAME.git (push)
upstream https://github.com/REMOTE_NAME/REPO_NAME.git (fetch)
upstream https://github.com/REMOTE_NAME/REPO_NAME.git (push)
정상적으로 등록된 것을 확인할 수 있다. 이제 모든 remote 저장소의 정보를 업데이트 한다.
$ git remote update
Fetching origin
Fetching upstream
From https://github.com/REMOTE_NAME/REPO_NAME
* [new branch] master -> upstream/master
변경사항 제거
- 원본 저장소와 다른 부분 중, stage된 파일/디렉토리를 제거
$ git reset --hard upstream/master
- 원본 저장소와 다른 부분 중, unstage된 파일/디렉토리를 제거
$ git clean -dfx
-d
: 추적 중이지 않은 모든 파일/디렉토리를 삭제-f
: 강제(force)를 의미-x
: .gitignore
에 포함된 파일까지 삭제
변경사항 push
원본 저장소와 동기화하고 작업을 한 후에, add와 commit을 하고 강제로 push한다.
$ git push -f
728x90
반응형