티스토리 뷰

말인 즉슨 선 Project, 후 Github인 케이스.

아무 것도 없는 Blank Github인 경우는 고민 할게 없다.
먼저 작업 하던 프로젝트를 A, 후에 Github에 생성한 Repository를 B라고 하면
그냥 B에 A를 push 하면 끝난다.

하지만, B를 생성 할 때, License, Readme, gitignore 등을 생성했다면?
당연히 해당 commit이 B에 생성 됐을 것이고, A와 B를 합치는 것이 단순한 작업이 아니다.

내가 선택한 방법은 A프로젝트에 작업하던 Commit History를 잃지 않기 위해
B의 Initial Commit 위로 A 프로젝트를 Rebase 하는 것이다.

상황은 이렇다.
aws_boto3_helper 라는 프로젝트를 이미 Git을 통해 작업 중이었고, 추후 이를 Github Repository에 올리기로 결정했다. 그 이후는?

  • Github에 aws_boto3_helper라는 이름으로 Repository를 생성했다. 이 때 Readme, gitignore, license를 포함하여 생성했다.
  • 당연히 aws_boto3_helper repo에는 initial commit이라는 이름의 초기 커밋이 존재한다.
  • 이제 내가 로컬에서 작업하던 프로젝트의 Git Console로 돌아와서 아래의 명령을 수행했다.
# 시작은 Local의 master branch
# Git Remote origin 추가
$ git remote add origin https://github.com/jakemraz/aws_boto3_helper.git

# Git Remote의 내용을 remotes/ 브랜치에 fetch
$ git fetch

# remotes/origin/master를 for_merge라는 이름으로 브랜치 생성 (좀 더 능숙 하면 이 과정 생략 가능)
$ git checkout -b for_merge remotes/origin/master

# rebase 명령을 통해 for_merge를 현재 master 위로 쌓는다. (rebase 한다.)
$ git rebase for_merge

# 충돌 나는 파일이 있으면 수정 후 머지 한다. 나의 경우는 .gitignore가 충돌났었음.
$ git add .gitignore

# 충돌 수정 완료 후 rebase를 계속 진행한다.
$ git rebase --continue

위 까지 하고 난 후 master branch를 aws_boto3_helper에 Push 한다.

그 결과는 아래와 같다.

무려 31분전에 생성한 커밋이 제일 밑에 있고, 그 위로 19일 전 생성한 커밋이 올라갔다.

댓글
댓글쓰기 폼
공지사항
Total
655,953
Today
16
Yesterday
300
«   2020/02   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
글 보관함