Git이란?
Git은 형상관리 툴 중 하나로, 파일을 작성하는데 있어, 변화하는 과정을 관리해주는 도구입니다.
GitHub는 파일 관리에 있어 로컬에 있는 파일을 공유할 수 있도록 원격(remote) 저장소(repository)를 제공하는 장소이며, Branch와 커밋을 통해 파일의 변화 과정을 저장해둘 수 있습니다.
Branch?
가지(branch)라는 뜻으로, 하나의 파일을 관리할 때 변화하는 과정에서 서로 다른 방향으로 나아가면 이를 관리할 때 각각의 Branch로 관리할 수 있습니다
자세한 사항은 여기를 통해 알아보고, 우리는 이 브랜치의 병합 방법에 대해 알아보겠습니다.
서로 다른 파일을 하나의 파일로 만드려면 어떻게 하지?
Branch는 파일의 변경사항(커밋)으로 이루어진 하나의 가지입니다. 현재 가지에서 바라보고 있는 것을 HEAD를 통해 나타내며, 이는 다른 Branch의 커밋과 병합할 수 있습니다.
하나의 파일(커밋)로 만드는 (병합하는) 방식은 크게 3가지로 나눌 수 있습니다.
- 새로운 파일(커밋)을 만들어 저장 (Merge)
- 변경사항을 하나의 파일(커밋)로 만들어 저장 (Squash & Merge)
- 원래 하나의 파일(커밋)인 것처럼 변경사항을 저장 (Rebase)
Merge
새로운 커밋을 만들고 현재 Branch와 병합할 Branch의 커밋을 비교하여 새로운 커밋에 저장합니다.
// 현재 Main
git merge Feature
Squash and Merge
변경사항을 하나로 병합하여 현재 브랜치의 새로운 커밋으로 등록합니다.
// 현재 Main
git merget --squash Feature
Rebase
변경사항들을 현재 Branch에 붙여 원래 하나의 Branch 처럼 등록합니다.
// 현재 my-branch
git rebase main
결론
브랜치 병합 방법은 여러 방법이 있지만, git 전략을 어떻게 가져갈지에 따라 자신의 변경사항들을 저장할 수 있으며, 상황에 따라 적절한 방식을 채택하여 사용해야합니다.
느낀점
프로젝트 참여 시엔, 단순 conflict를 해결하기 위해 rebase를 사용했었으며, PR시 squash의 대한 이해도가 없어 Git 그래프를 단순하게 만들기 위해 squash를 사용하였지만, 위 내용을 공부하면서 얼마나 멍청하게 사용한지를 깨달았습니다. 공부한 이후엔, 브랜치를 병합하는데 있어 내가 원하는 방식과 그래프의 모양을 생각하며 그래프만 봐도 파일의 흐름이 어떻게 변해왔는지 알 수 있게 짜려 노력하고 있습니다.
참조
끌어오기 요청 병합 정보 - GitHub Docs
기능 분기의 모든 커밋을 유지하거나, 모든 커밋을 단일 커밋으로 스쿼시하거나, 개별 커밋을 head 분기에서 base 분기로 개별 커밋을 다시 적용하여 끌어오기 요청을 병합할 수 있습니다.
docs.github.com
https://hudi.blog/git-merge-squash-rebase/
Git의 다양한 브랜치 병합 방법 (Merge, Squash & Merge, Rebase & Merge)
학습 배경 우아한테크코스 달록팀에서 브랜치 전략 개선과 배포와 관련된 이야기를 하면서 다양한 병합방법에 대한 이야기가 나왔다. 이야기를 해보면서, 아직 Git의 다양한 병합 방법에 대한
hudi.blog
'CS > Git' 카테고리의 다른 글
[Git] Git Flow 브랜치 전략? (0) | 2024.06.07 |
---|