서로 다른 브랜치에서 작업을 하다가 새로운 브랜치를 기존 브랜치와 합치는것을 병합(merge)라고 합니다.
새로운 저장소를 만들어서 테스트 해보고자 합니다!
저는 이번에는 홈디렉터리에 BranchTest02 라는 디렉터리를 만들어서 저장소로 만들겠습니다!
cd ~
git init BranchTest02
cd BranchTest02 ls -la
cd ~ 명령을 이용하면 어떤 경로에서든 홈 디렉터리로 이동하게됩니다.
또한 git init 디렉터리명 명령을 사용하면 디렉터리를 만듬과 동시에 저장소로 만듭니다.
이해 만든 디렉터리에 들어가서 ls로 디렉터리의 상태를 확인합니다.
저장소가 잘 만들어 진것을 확인할수 있습니다.
이제 test.txt를 만들고 "1"이라는 내용을 만들어서 저장한후 스테이징하고 "test 1"이라는 메세지로 커밋하겠습니다.
vim test.txt
git add test.txt
git commit -m "test 1"
git log
log를 확인해보면 HEAD는 master 브랜치를 가르키고 master의 최근 커밋은 "test 1"입니다.
git branch t2
git log
t2라는 이름의 브랜치를 만들고 log 를 확인해보면 t2 브랜치 역시 "test 1" 커밋을 가르키고 있습니다.
이번에 master 브랜치에서 master.txt파일을 만들어 "master 2"를 입력하고 저장한뒤 스테이징 한 후 "master test 2"라는 메세지로 커밋해보겠습니다.
vim master.txt
git add master.txt
git commit -m "master test 2"
git log
이러면 master브랜치는 "master test 2"의 커밋내역을 가르키고 있으며 t2 브랜치는 "test 1"의 커밋내역을 가르키고 있네요!
이번에는 t2 브랜치로 이동(checkout)해보겠습니다.
git checkout t2
master와 마찬가지로 t2.txt파일을 만들어서 "t2 2"라는 내용을 입력후 저장한뒤 "t2 test 2"라는 메세지로 커밋해보겠습니다.
vim t2.txt
git add t2.txt
git commit -m "t2 test 2"
git log --oneline --branches --graph
log를 확인해보면 t2브랜치는 "t2 test 2"커밋내역을 가르키고있으며 HEAD는 t2를 가르키고 있습니다.
(오타의 흔적... 못본척 해주세요)
이제 t2 브랜치에서 작업이 끝났다고 가정하고 다시 master 브랜치로 이동하겠습니다.
git checkout master
master 브랜치에서 t2 브랜치를 병합하겠습니다.
git merge t2
Merge branch 't2'라는 커밋 메세지가 나타납니다.
브랜치를 병합하면서 만들어지는 커밋메시지인데 vim을 이용해 텍스트 파일을 수정하는것과 같이 수정하고 저장할수 있습니다.
옵션
|
설명
|
--no--edit
|
편집기창을 열지 않고 깃에서 지정하는 커밋 메세지를 그대로 사용
|
--edit
|
브랜치를 병합할 떄 편집기 창이 나타나지 않도록 설정했을때, 커밋 메시지를 추가하거나 수정하고 싶을때 사용
|
커밋메세지를 따로 수정하지 않고 그대로 저장하였습니다.
git log
다시한번 로그를 확인해보면 t2브랜치는 "t2 test 2"에 머물러있으며 master 브랜치는 "Merge branch 't2'"를 최근커밋으로 가르키고 있습니다.
ls -la
디렉터리를 다시 살펴보면 t2브랜치에 있던 t2.txt 파일이 master 브랜치에 합쳐져 있을 것입니다.
git log --oneline --branches --graph
그래프로 확인해보면 따로 분기 되었던 t2 브랜치가 병합 된걸 볼수있습니다.
또한 master 브랜치에서 다른 브랜치를 분기한 후에 master 브랜치에서 새로운 커밋을 하지 않았다면 분기한 브랜치에서 만든 최신 커밋을 amster 브랜치가 가르키게 하면 됩니다. 이 경우 화면에 커밋 해시가 업데이트 되었다는 내용과 함께 fast-forward라는 메시지가 나타납니다.
이러한 병합을 빨리감기 병합(fast-forward merge)라고 합니다.
git merge 명령의 결과가 단순히 포인터를 움직이기만 한것이기 떄문에 따로 커밋 메시지 창은 열리지 않습니다.
본 포스팅은 DO it! 지옥에서 온 문서 관리자 깃&깃허브 입문 도서를 참고하며 공부한 내용을 포스팅 하였습니다.
'Git > Github' 카테고리의 다른 글
[Git & GitHub] branch 관리 (0) | 2022.06.21 |
---|---|
[Git & GitHub] 같은문서 수정 후 merge / 브랜치 삭제 (0) | 2022.06.20 |
[Git & GitHub] 브랜치정보확인(새로운 브랜치에서 커밋) (0) | 2022.06.18 |
[Git & GitHub] 브랜치(branch) 만들기 (0) | 2022.06.17 |
[Git & GitHub] Branch?브랜치란? (0) | 2022.06.16 |