Merge와 Rebase

정보/뉴스

Merge와 Rebase

담운 0 1,475 2019.06.08 12:51

git merge

이제 feature 브랜치에서 작업하던 내용이 완성되었다면 master와 합쳐서 실제로 사용할 수 있게 해야합니다. 이 때 사용하는 명령어가 git merge [브랜치명]입니다. 주의할 점은 여기서의 브랜치명은 합칠 branch입니다. 바탕이 되는 branch가 아니라요. 우리가 합칠 branch는 feature죠. 따라서 merge 전에 항상 git branch 명령어로 현재 HEAD가 바탕이 되는 master에 있나 확인해야 합니다.

merge 후에는 구조가 다음과 같아집니다.

2cnMOSMYQAGqHsWfgl1P


merge 결과에 Fast-forward라고 표시되어 있는데 이것은 master 브랜치를 앞으로 쭉 당겼다는 뜻입니다. feature 브랜치가 master 브랜치보다 한 commit 앞에 있었기 때문에 master 브랜치가 feature 브랜치를 merge하는 순간 한 commit 앞으로 당겨지는 거죠.

conflict

하지만 모든 merge가 이렇게 순조롭게 되는 것은 아닙니다. 가끔 branch끼리 충돌이 나는 경우가 있는데 그 경우를 알아봅시다.

git reset HEAD~1으로 master branch를 뒤로 돌려봅시다. 그리고 git.html을 다음과 같이 수정하고 commit을 해봅니다.

<!DOCTYPE html>
<html>
<head>
  <title>깃 연습</title>
  <link rel="stylesheet" href="./git.css" />
</head>
<body>
  <h1>깃 conflict</h1>
  <p><b>깃 conflict</b>의 사용 방법에 대해 알아봅시다</p>
</body>
</html>

zW6oeCPR2OL1aBDSuZBA


이제는 branch 두 개가 각자 다른 갈래로 갈라졌습니다. 이제 git merge feature을 하면 충돌이 일어나는 것을 볼 수 있습니다.

Syf4OjmSBqrgq4W1FmhQ

또한 git.html도 다음과 같이 자동으로 변경되었습니다.

<!DOCTYPE html>
<html>
<head>
  <title>깃 연습</title>
  <link rel="stylesheet" href="./git.css" />
</head>
<body>
<<<<<<< HEAD
  <h1>깃 conflict</h1>
  <p><b>깃 conflict</b>의 해결 방법에 대해 알아봅시다</p>
=======
  <h1>깃 브랜치</h1>
  <p><b>깃 브랜치</b>의 사용 방법에 대해 알아봅시다</p>
>>>>>>> feature
</body>
</html>

<<<<<<< HEAD와 >>>>>>> feature 사이가 충돌이 발생하는 지점입니다. Conflict commit과 Feature commit의 차이점이기도 하고요. 이 부분을 직접 정상적으로 바꿔주고 addcommit 해줍니다. 이제 갈라졌던 두 브랜치가 하나의 commit으로 다시 합쳐졌습니다.


git rebase

두 branch를 합치는 다른 방법은 git rebase입니다. 위의 구조에서 git reset HEAD~1을 해줍니다. 합쳐졌던 두 개의 브랜치가 다시 갈라졌습니다.


두 사람이 협업하다가 commit이 서로 달라진 경우죠. 이제 여기(master)서 feature branch를 rebase합니다. git rebase [브랜치명]입니다.

KqzTJprSmaJpoQwFEDCL

역시나 충돌이 일어나는 데 merge와는 해결 방법이 살짝 다릅니다. 일단 git.html의 충돌을 해결하고 git add git.html로 staged 상태로 만들어줍니다. merge는 그 후에 commit을 했지만, rebase는 git rebase --continue로 중단된 rebase를 이어가면 됩니다.

hFIlZVomTuir6JDxDN6x

현재 구조는 다음과 같습니다.


merge 때와는 살짝 다르죠? merge는 갈라진 두 commit이 합쳐져서 새로운 commit이 되었다면, rebase는 하나의 commit이 다른 commit 앞으로 올라갑니다. 아래의 merge 경우와 비교해보세요.


merge와 rebase는 취향에 따라 사용하시면 됩니다. 깔끔한 log를 원하면 rebase를 하고, 직관적으로 간단하게 하고 싶으면 merge를 하면 됩니다.

다음 시간에는 그 외 자잘한 명령어들에 대해 알아보겠습니다!

연관 게시글

투표로 게시글에 관해 피드백을 해주시면 많은 도움이 됩니다. 오류가 있다면 어떤 부분에 오류가 있는지도 알려주세요! 잘못된 정보가 퍼져나가지 않도록 도와주세요. 

Comments

번호 제목 글쓴이 날짜 조회
72 과연 양방향매매로 수익낼 수가 있는가… 댓글+1 담운 2020.05.14 3103
71 [해외선물] 실시간 시세신청 안내-지… 담운 2020.05.11 1041
70 해외선물 실시간 시세 무료로 볼 수 … 담운 2020.05.10 1616
69 DB금융투자, 수수료 혜택 등 해외선… 담운 2020.04.02 941
68 위험 고지 담운 2020.03.31 936
67 리스크 고지 담운 2020.03.11 924
66 해외선물 증거금 담운 2019.10.20 1215
65 CME E-micro 담운 2019.10.20 1177
64 파생상품 양도소득세 확정신고 안내 담운 2019.09.25 1250
63 주식, 암호화폐, 해외주식 세금 비교 담운 2019.09.13 1217
62 해외선물옵션 API 시세 유료화 정책… 담운 2019.08.28 2328
61 Github에 ssh키 생성하고 등록… 담운 2019.06.08 1546
60 github-white-logo-70… 담운 2019.06.08 1570
59 ssh-key 생성 및 github,… 담운 2019.06.08 2077
58 Git 서버 - SSH 공개키 만들기 담운 2019.06.08 1764
57 Nodejs로 구현한 서비스를 Caf… 담운 2019.06.08 6569
56 GitHub SSH 키 생성 및 등록… 담운 2019.06.08 1920
55 기타 Git 명령어(cherry-pi… 담운 2019.06.08 1347
열람중 Merge와 Rebase 담운 2019.06.08 1476
53 Git 브랜치(Branch) 관리 담운 2019.06.08 1712
52 Git commit 수정하기, dif… 담운 2019.06.08 1535
51 Github 사용하기, remote,… 담운 2019.06.08 2035
50 Git 저장소 생성(init), 최초… 담운 2019.06.08 1628
49 Git 설치와 사용법(Git Bash… 담운 2019.06.08 1718
48 node.js git 사용법 담운 2019.06.08 1851
47 Windows에서 git 및 node… 담운 2019.06.08 1787
46 Nodejs로 구현한 서비스를 Caf… 담운 2019.06.08 1810
45 Git 활용 (기본적인 사용법) 담운 2019.06.08 1607
44 cafe24 nodejs git 저장… 담운 2019.06.08 5114
43 카페24 node.js 접속준비 담운 2019.06.08 2236
42 cafe24 node.js git 사… 담운 2019.06.08 4276
41 GitHub - 소스트리(Source… 담운 2019.06.07 2274
40 Sourcetree 설치 가이드 담운 2019.06.07 1502
39 [Git] 소스트리 (SourceTr… 담운 2019.06.07 1792
38 GitLab 업무환경 구성 가이드 담운 2019.06.07 1791
37 Git :: 소스트리(SourceTr… 담운 2019.06.07 1649
36 cafe24 에서 nodejs hos… 담운 2019.06.06 2202
35 카페24 node.js 접속준비 담운 2019.06.06 3647
34 카페24에서 Node.js 서버로 A… 담운 2019.06.06 1936
33 ssh 키 인증 방식으로 로그인하기 담운 2019.06.06 1861
Category
State
  • 현재 접속자 29 명
  • 오늘 방문자 225 명
  • 어제 방문자 302 명
  • 최대 방문자 747 명
  • 전체 방문자 194,582 명
  • 전체 게시물 145 개
  • 전체 댓글수 1 개
  • 전체 회원수 3 명
Facebook Twitter GooglePlus KakaoStory NaverBand