오늘은 쉽지만 중요한 깃의 branch 생성 & 병합에 대해 공부해보겠다.
이런 식으로 브랜치를 생성하고 머지하는 연습을 해보겠다.
의도적으로 충돌도 한 번 내어 보겠다.
먼저 touch work.txt 파일을 만들고 저장소를 초기화 해주는 명령어를 사용해보자
git init
이러면 이제 .git 저장소가 생기는 것이다. 여기서 이제 작업을 시작하면 된다.
첫 번째 메인 브랜치에서 작업을 해보자.
git add.
git commit -m "first commit"
git commit -am을 통해 바로 스테이징에 왜 안올리는가 싶을 수 있으나
git commit -am 명령어가 처음에 동작하지 않는 이유는 -a 옵션이 수정된 파일을 자동으로 스테이징(stage)하는 역할을 하지만, 새로 추가된 파일은 포함하지 않기 때문이다.
처음 추가된 파일은 수동으로 스테이징해야 하고, 수정된 파일은 git commit -am으로 바로 처리할 수 있다.
이렇게 second commit 까지 완료를 하고 이제 새로운 브랜치인 second 브랜치를 만들어보자.
git branch second
second 브랜치를 만든 후
git switch second
second 브랜치로 브랜치를 변경시켜준다.
그리고 새로운 글을 입력하고 커밋해준다.
git commit -am "sec: 1 commit"
second 브랜치의 커밋을 완료했으니 다시 main 브랜치로 돌아온다.
git switch main
second 브랜치와 내용을 같게 하고 (내용이 다르다고 항상 충돌나는건 아니지만 이 상황에선 충돌남)
git commit -am "main: 3 commit"
이렇게 커밋해주면 된다. 이제 병합해보자!
병합은 메인이 되는 곳에서 실행해줘야 한다.
반드시 메인 브랜치에서만 해야 하는 것은 아니지만 보통의 워크플로우에서 중요한 브랜치에 병합할 때는 메인 브랜치에 안정적인 코드만 포함되어야 한다.
다른 작업 브랜치에서 기능 개발이나 버그 수정이 완료되면 메인 브랜치로 병합하는 것이다.
현재 위치가 메인 브랜치에 있으므로
메인 브랜치에서 병합을 시도해준다. 내용이 같기 때문에 오류가 없을 것이다.
git merge second
그럼 이렇게 병합에 관한 문자가 나오고
이런 파일이 뜨는데 이 파일을 꺼주면 머지가 완료된다.
완료 확인!
이제 새로운 브랜치인 third 브랜치를 만들 것이다.
전에 했던 것처럼
git branch third
명령어로 새 브랜치를 만들어준다.
새로운 것을 커밋할 건 아니고 third 브랜치의 생성 시점을 git graph에서 확인할 떄 이 시점으로 하기 위해서 하나 만들어준 것이다.
이제부터 다음 머지 전까지 각각 스위치하고 커밋하는 과정을 빠르게 명령어로만 기술하겠다.
git commit -am "main: 4 commit"
git commit -am "main: 5 commit"
git switch third
git commit -am "third: 1 commit"
git commit -am "third: 2 commit"
git switch main
간단하게 요약하자면 main과 third 브랜치에서 각각 커밋을 했는데
이번엔 충돌을 내기 위해 main 브랜치와 third 브랜치의 내용을 다르게 했다.
한 번 머지를 해서 충돌을 시켜보자.
git merge third
결과는 당연히 실패가 뜰 것이다.
그럼 충돌에 대해서 파일이 뜨는데
이렇게 어떤 내용이 다르다 어떻게 할 것인가 나온다.
여기서 main 브랜치의 기준으로 할 것이기 때문에 main 브랜치의 기준에 있으므로 Accept Current change를 눌러준다.
그러면 이렇게 main 브랜치에서
이렇게 머지되고 있는 것을 확인할 수 있는데 여기서 한 번 더 커밋을 해줘야 한다.
git commit -am "merged main and third"
이제 완전히 병합이 완료되었다!
마지막으로 그래프를 완료하기 위해 second 브랜치로 전환해서 커밋을 해주고 마지막 second까지 병합을 해주겠다.
git switch second
git commit -am "second: 2 commit"
이렇게 브랜치 전환 후 second 브랜치의 내용을 main과 같게 한 후
git switch main
git merge second
마지막 머지까지 해주면?
결과
처음 그래프와 같아졌다.
이번엔 간단하게 브랜치의 생성과 전환, 커밋, 병합에 대해 로컬 브랜치에서 수행해보고
git graph로 확인해보았다.
'Git, CICD > Git,Github' 카테고리의 다른 글
Git에 엉뚱한 폴더까지 올라간다? (2) | 2025.08.28 |
---|---|
[Git] 원격 저장소 커밋과 로컬 수정 사항 충돌을 해결해보자 (1) | 2025.03.24 |
[github] 프로젝트 협업하기 (1) | 2024.12.27 |
[Git] 오류 해결 Updates were rejected because the remote contains work that you do... (0) | 2024.09.16 |
github 필수 핵심 명령어 (5) | 2024.04.23 |