build my life

[Git] merge(Fast-forward, rebase, squash) 본문

실습

[Git] merge(Fast-forward, rebase, squash)

dalovee 2023. 7. 4. 19:31
728x90

Fast-forward

merge할 브랜치의 commit이 현재 branch의 commit 보다 앞설 경우, 현재 브랜치의 커밋을 merge할 브랜치 commit으로 이동하겠다는 의미

 

1. main에서 먼저 작성 후 commit

git add .
git commit -m "메세지"

2. test1 branch 생성 후 파일 수정한 다음 commit

git checkout -b test1
git add .
git commit -m "메세지"

3. main으로 이동 후 test1 merge

git checkout main
git merge test1

=> main의 HEAD를 test1의 HEAD로 이동한다는 의미

=> 실제로 main branch에서 log를 확인하면 test1에서 작성한 커밋 메세지가 표시됨

=> test1의 merge commit이 생성되지 않음

 

💡 만약, merge commit을 남기고 싶을 경우엔 '--no-ff' 옵션을 주면 된다.
git merge --no-ff test1​
=> 브랜치가 그대로 남기 때문에 해당 브랜치에서 실행한 작업을 확인할 때 사용

# --ff-only : ff인 경우에만 병합, merge commit 생성 안함
git merge --ff-only {branch}

# --squash : 여러개의 커밋을 하나로 합치는 기능
git merge --squash {branch}​

 

rebase

두 브랜치를 합치는 방법 중 하나로 브랜치의 공통 조상이 되는 base를 다른 브랜치의 커밋 지점으로 바꾸는 것

즉, test3에서 변경한 내용을 main의 마지막 커밋 지점으로 바꾼다는 의미

$ git checkout test3
$ git rebase main
$ git checkout main
$ git merge test3

 

=> rebase 같은 경우에는 혼자 작업하는 상황에서만 사용!


[ 참고 자료 ]

https://victorydntmd.tistory.com/78?category=682764 

 

[Git] 명령어(4) - merge, conflicts

1. Merge와 Conflicts이번 글에서는 local repository에서 branch를 생성하여 작업을 한 후, 두 브랜치를 통합하는 merge에 대해 알아보도록 하겠습니다. merge를 하는 도중에 충돌( conflicts )이 발생할 수 있습

victorydntmd.tistory.com

https://backlog.com/git-tutorial/kr/stepup/stepup1_4.html

 

누구나 쉽게 이해할 수 있는 Git 입문~버전 관리를 완벽하게 이용해보자~ | Backlog

누구나 쉽게 알 수 있는 Git에 입문하신 것을 환영합니다. Git을 사용해 버전 관리를 할 수 있도록 함께 공부해봅시다!

backlog.com

https://wonyong-jang.github.io/git/2021/02/05/Github-Merge.html

 

[Git] Merge(3-way merge) 이해하기 - SW Developer

다른 형상 관리툴들과는 달리 git은 branch를 생성할 때 파일을 복사하는 것이 아니라 파일의 스냅샷만 가지고 생성하기 때문에 자원의 부담없이 branch를 만들어 사용할 수 있다. 이러한 장점 때문

wonyong-jang.github.io

https://wonyong-jang.github.io/git/2021/02/05/Github-Rebase.html

 

[Git] Rebase와 Conflict 해결 방법 - SW Developer

이전글에서는 브랜치를 병합하는 방법 중 Merge와 Squash Merge 방법에 대해서 살펴보았다. 이번 글에서는 Rebase를 이용하여 브랜치를 병합하고 충돌시 해결 방법에 대해서 살펴보자. 또한, rebase intera

wonyong-jang.github.io

 

728x90