본문 바로가기
Software/Open Source

[GIT] Branch 2

by 리미와감자 2024. 1. 7.

Branch 2


Branch 합치기(Merge)

 

 

 

git merge <MergeBranch 이름>: Branch를 하나의 새로운 Commit이어붙인다.

 

현재 CheckoutBranch에 해당 BranchMerge한다.

 

HEAD가 가리키는 Commit에 해당 Branch가 가리키는 Commit을 합쳐 새로운 Commit을 만든다.

 

Fast Forward Merge가 가능하다.

 

Branch의 사용 내역들을 남길 필요가 있을 때 적합한 방식이다.

 


 

Branch 합치기(Rebase)

 
 
 
git rebase <RebaseBranch 이름>: 다시 Base를 정한다는 의미로, Branch를 다른 Branch이어붙인다.

 

Master(줄기)에서 Commit의 히스토리를 한 줄로 깔끔하게 확인할 수 있다.

 

Master는 최대한 건들면 안되기 때문에, Master를 다른 BranchRebase하지 않는다.

 

다른 사람과 공유된 CommitRebase하지 않는다.

 


 

Merge vs. Rebase 사용 예제

1) Merge로 합치기
 
git branch test_branch: test_branch 생성
 
git checkout master: master branch로 이동
 
git merge test_branch: test_branchmaster branchmerge
 
git branch –d test_branch: merge가 끝난 branch는 삭제한다.
 

* git reset으로 merge 전으로 돌아갈 수 있다.

 

* Recursive Merge(3-way Merge): ③, ④

현재 브랜치가 가리키는 커밋이 Merge 브랜치의 조상이 아니므로, 브랜치가 가리키는 Commit 두 개와 공통 조상 하나를 사용하여 3-way Merge를 한다.

 

 

 

 

2) Rebase로 합치기

 
git branch test_branch: test_branch 생성
 
git checkout test_branch: test_branch branch로 이동
 
git rebase master: test_branchmaster branchrebase
 
git checkout master: master branch로 이동
 
git merge test_branch: test_branchmaster branchmerge
 
git branch –d test_branch: merge가 끝난 branch는 삭제한다.
 

* Fast Forward Merge: ④, ⑤

• A 브랜치에서 다른 B 브랜치를 Merge 할 때 B 브랜치가 A 브랜치 이후의 커밋을 가리키고 있으면(즉, B 브랜치가 A 브랜치를 기반으로 하면), A 브랜치가 B 브랜치와 동일한 커밋을 가리키도록 이동시키며 어떠한 Commit도 만들지 않는다.
• Rebase로 Branch를 합치는 경우, Fast Forward Merge를 해야한다.

 

 


충돌 해결하기

같은 파일의 같은 부분에 다른 내용을 입력했을 때
 
1) Merge 충돌 해결하기
MergeCommit에서 충돌된 Commit 중 어느 Commit의 코드를 채택할지 선택한다.

 

직접 타이핑하여 수정할 수 있다.

 

충돌 내용이 너무 복잡하여 중단하고 싶으면 git merge --abort 명령으로 중단할 수 있다.

 

수정 후, StagingCommit을 완료한다.
 
2) Rebase 충돌 해결하기
RebaseCommit에서 충돌된 Commit 중 어느 Commit의 코드를 채택할지 선택한다.

 

직접 타이핑하여 수정할 수 있다.

 

충돌 내용이 너무 복잡하여 중단하고 싶으면 git rebase --abort 명령으로 중단할 수 있다.

 

수정 후, Staging한다.

 

Rebase의 경우 모든 Commit의 충돌이 해결되어야 한다. git rebase --continue를 입력하여 충돌 해결이 끝날 때까지 진행한다.

 

, ⑤를 반복한다.

'Software > Open Source' 카테고리의 다른 글

[GIT] Command 모음  (1) 2024.01.10
[GIT] Remote Repository  (0) 2024.01.08
[GIT] Branch 1  (0) 2024.01.07
[GIT] Commit 되돌리기  (0) 2024.01.05
[GIT] GIT 저장소에 파일 저장하기  (0) 2024.01.02

댓글