728x90
반응형
Branch 2
■ Branch 합치기(Merge)

①git merge <Merge할 Branch 이름>: 두 Branch를 하나의 새로운 Commit에 이어붙인다.
②현재 Checkout된 Branch에 해당 Branch를 Merge한다.
③HEAD가 가리키는 Commit에 해당 Branch가 가리키는 Commit을 합쳐 새로운 Commit을 만든다.
④Fast Forward Merge가 가능하다.
⑤Branch의 사용 내역들을 남길 필요가 있을 때 적합한 방식이다.
■ Branch 합치기(Rebase)

① git rebase <Rebase할 Branch 이름>: 다시 Base를 정한다는 의미로, Branch를 다른 Branch에 이어붙인다.
② Master(줄기)에서 Commit의 히스토리를 한 줄로 깔끔하게 확인할 수 있다.
③ Master는 최대한 건들면 안되기 때문에, Master를 다른 Branch에 Rebase하지 않는다.
④ 다른 사람과 공유된 Commit을 Rebase하지 않는다.
■ Merge vs. Rebase 사용 예제
1) Merge로 합치기

① git branch test_branch: test_branch 생성
② git checkout master: master branch로 이동
③ git merge test_branch: test_branch를 master branch에 merge
④ 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_branch를 master branch에 rebase
④ git checkout master: master branch로 이동
⑤ git merge test_branch: test_branch를 master branch에 merge
⑥ 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 충돌 해결하기
①Merge된 Commit에서 충돌된 Commit 중 어느 Commit의 코드를 채택할지 선택한다.
②직접 타이핑하여 수정할 수 있다.
③충돌 내용이 너무 복잡하여 중단하고 싶으면 git merge --abort 명령으로 중단할 수 있다.
④수정 후, Staging과 Commit을 완료한다.
2) Rebase 충돌 해결하기
① Rebase한 Commit에서 충돌된 Commit 중 어느 Commit의 코드를 채택할지 선택한다.
② 직접 타이핑하여 수정할 수 있다.
③ 충돌 내용이 너무 복잡하여 중단하고 싶으면 git rebase --abort 명령으로 중단할 수 있다.
④ 수정 후, Staging한다.
⑤ Rebase의 경우 모든 Commit의 충돌이 해결되어야 한다. git rebase --continue를 입력하여 충돌 해결이 끝날 때까지 진행한다.
⑥ ④, ⑤를 반복한다.
728x90
반응형
'Software > Tool' 카테고리의 다른 글
[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 |
댓글