Jin Dev
Jin Dev
Jin Dev
전체 방문자
오늘
어제
  • 분류 전체보기 (7)
    • 공부 (4)
      • Python (1)
      • C++ (1)
      • XE (1)
      • Git (1)
    • 팁 (3)

블로그 메뉴

  • 홈
  • About me

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Jin Dev

Jin Dev

공부/Git

Pull request에서 중복 commit 현상이 발생할 때

2019. 3. 25. 15:40
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
반응형
    Jin Dev
    Jin Dev

    티스토리툴바