본문 바로가기
Tips/Git

[Git] 03. branch 생성, merge, rebase

by _S0_H2_ 2021. 6. 10.
728x90
반응형

1. branch를 생성해보자

branch생성됨

branch1을 생성하면서 자동으로 checkout(해당 branch로 이동) 되었다.

임의로 commit을 많이 해보았다.

origin/master와 master branch는 git check 에 머무르고 있고,

지금은  version1 branch 에 위치하고 있다.

 

다시 git check로 돌아가서(checkout) version2를 만들어보자.

여기에서 또 임의로 commit을 몇 개 해준다.

master은 git check에, version1 은 add5에, version2는 add8에 머무르고 있다.

그리고 현재는 version2 에 위치해있다.

 

2. merge 해보기

현재 version2 branch에 위치한 상태에서

 

Merge into Current를 클릭하면?! 

충돌난다.

 

그리고 나서 어떤 파일을 선택할지 물어보는데 

Yours가 version2(현재 위치한 곳), Theirs가 version1(merge하고자 하는 파일)이다.

한 번에 accept yours/theirs 를 선택할 수도 있지만, merge를 눌러서 내가 원하는 코드만 넣을 수도 있다.

나는 둘 다 클릭해서 한 곳에 넣었다.

그러면 version2 파일에 version1의 코드가 들어와서 result와 같은 형태가 된다.

그리고 commit을 했더니?

version1이 version2와 합쳐지고 version2에 최종 형태를 띄게 된다.

 

다시 version1으로 checkout해서 commit을 해보자.

그러면 그 상태에서 또 그대로 나간다.

version2를 version1에 merge를 해보자. 위와 같이 동일하게 수행한다.

결과는?

요런 그래프가 된다.

 

-- 정리해보자면 --

version1에 header가 있는 상태에서 version2를 우클릭하고 Merge into Current를 하면 

conflict해결 후의 결과를 version1으로 반영한다.

 

3. rebase는 뭘까?

헷갈리니까 여기에서 새롭게 시작하는 version3, version4의 branch를 하나 만들어보자.

임의로 두개씩 commit도 한다.

현재 version4에 위치한 상태에서 rebase를 클릭한다.

merge와 마찬가지로 이런애가 뜬다.

여기에서는 commit add version 4-1 과 commit add version 3-1, 3-2 를 먼저 merge 했다.

이후, 위에서 merge한 것과 commit add version 4-2를 또 merge했다.

 

현재 version 4에 위치하는데 모두 merge한 값들을 갖고 있다.

 

rebase와 merge는 parent commit을 정리함으로써 git history를 깔끔하게 할 수 있는 것이 큰 장점이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

'Tips > Git' 카테고리의 다른 글

[Git] Github Actions + Test Coverage (jest)  (0) 2024.04.26
[Git] Github Actions CI 적용&Test  (0) 2024.04.24
[Git] 04. cherry-pick  (0) 2021.06.10
[Git] 02. add, commit, push 취소하기  (0) 2021.06.10
[Git] 01. add, commit, push  (0) 2021.06.10