git merge
merge는 두 개 이상의 브랜치를 병합하는 데 사용되는 Git 명령어
각각의 branch에서 작업을 수행하고 각 작업이 완료가 되면 해당 작업들을 마무리하고 기존 branch와의 merge를 수행하게 됨.
- 보통 feature 브랜치를 main 브랜치에 병합하거나
- 여러 개발자들이 각자 작업한 내용을 하나의 브랜치로 합치는 데 사용됨.
git에서 브랜치를 합치는 방법은 크게 다음과 같이 3가지 모드가 있으며, 이중 Fast-Forward Merge와 3-Way Merge가 git merge명령어에서 사용가능하며, Rebase는 git rebase 명령어로 수행됨.
- Fast-Forward Merge
- 3-Way Merge
- Rebase
2024.05.26 - [utils/git and github] - [Git] merge mode: merge and rebase.
Git Merge 사용법
1.병합할 브랜치로 이동하기
병합할 대상 브랜치로 변경.
예를 들어, feature 브랜치를 main 브랜치로 병합하려면 main 브랜치로 변경.
git switch main
2023.12.31 - [utils/git and github] - [git] switch : branch 전환
2.merge 명령어 실행
병합할 브랜치(feature)를 지정하여 merge(병합).
git merge feature
3.conflict 해결 (필요한 경우)
merging 도중 conflict이 발생할 경우 충돌 파일을 수정하고나서
다음 명령어로 수정된 file (<resolved-files>
)으로 commit
.
git add <resolved-files>
git commit
- 같은 file의 같은 위치를 다르게 수정한 경우, 자동으로 merging이 불가능.
- 이 경우 conflict가 발생.
- 충돌이 일어나는 파일을 열어서 충돌을 확인하고 수정해야 함.
4.merge 완료
merging이 완료되면 병합된 브랜치를 삭제할 수 있음 (option).
git branch -d feature
- 지우는 게 아닌 숨긴다고 표현하는 게 맞음.
- 이후 다시 같은 이름의 branch 를 생성시 예전 내용을 볼 수 있기 때문임.
참고
-d
는 stage가 깨끗하게 처리된 상태(working tree에 작업한 기록이 없고,add
명령으로 stage에 commit할 것들이 없는 상태)여야 삭제가 됨.- 또한 최신 commit이 연결된 remote repository의 branch보다 최신일 경우에도 삭제가 되지 않음.← 이경우 push를 해주면 삭제가 가능해짐.
- 즉, 최신 변경 사항이 있어서 아직 Merge가 필요한 경우에는 삭제가 되지 않음. ← 이경우,
-D
옵션을 사용하면 강제로 삭제함. - 삭제는 현재 branch는 제거할 수 없음. 다른 branch로 switch한 다음 제거해야 함.
Git Merge Tutorial
여기서 소개할 튜토리얼은 Atlassian의 Git Merge 튜토리얼을 기반으로 한 것임.
여러 브랜치에서 git log
는 다음을 사용하길 권함.
git log --oneline --branches --graph
--oneline
: commit 당 로그를 한줄 씩--branches
: 각 branch의 로그를 출력.--graph
: 그래프 형태로 출력.
브랜치 간의 차이점은 다음의 명령어로 확인.
git log <기준branch>..<대상branch>
2023.12.31 - [utils/git and github] - [Git] log: commit history 살펴보기
1. 튜토리얼 준비
Git을 설치하고 local repository로 사용할 디렉토리에서 repository생성.
GitHub 또는 GitLab과 같은 원격 저장소를 연결할 수도 있음( #으로 시작하는 line에 해당): option
git init
# git remote add origin <remote-repository-URL>
2. 새로운 브랜치 생성 및 작업
1.main 브랜치에서 새로운 브랜치를 생성.
git switch -c feature-branch
2.새로운 브랜치에서 작업을 진행하고 커밋.
echo "Feature work" > feature.txt
git add feature.txt
git commit -m "Add feature work"
3. main 브랜치로 병합
1.main 브랜치로 변경.
git switch main
2.feature-branch를 main 브랜치에 병합.
git merge feature-branch
3.병합이 성공적으로 완료되었는지 확인합니다.
git log --oneline
4.병합된 브랜치를 삭제 (option).
git branch -d feature-branch
4. 충돌 해결
충돌이 발생한 경우, 다음 단계를 따릅니다:
1.충돌 파일을 열고 수정.
2.수정된 파일을 add (staging).
git add <resolved-files>
3.병합을 완료.
git commit
같이 보면 좋은 자료
2024.05.20 - [utils/git and github] - [Git] Git Summary (작성중)
2023.12.30 - [utils/git and github] - [git] branch : branch를 생성하거나 확인 또는 삭제 및 변경
'utils > git and github' 카테고리의 다른 글
[Git] Tutorial: 3-way merge, fast forward, and rebase (0) | 2024.05.26 |
---|---|
[Git] merge mode: merge and rebase. (0) | 2024.05.26 |
[Git] git 에서 branch란? (0) | 2024.05.26 |
[Git] reset: 가장 쉬운 되돌리기. 단 공동작업에선 피하자. (0) | 2024.05.26 |
[Git] mv (0) | 2024.05.21 |