사이먼's 코딩노트
[GitHub] 깃 브랜치 본문
[Git Branch (깃 브랜치)]
- 브랜치란 독립적으로 어떤 작업을 진행하기 위한 개념이다.
- 소프트웨어를 개발할 때 개발자들은 동일한 소스코드를 함께 공유하고 다루게 되는데, 동일한 소스코드 위에서 어떤 개발자는 버그를 수정하기도 하고, 새로운 기능을 만들어 내기도 한다.
- 이와 같이 여러 사람이 동일한 소스코드를 기반으로 서로 다른 작업을 할 때, 각각 서로 다른 버전의 코드가 만들어지기 마련이다.
- 이럴 때 동시에 다양한 작업을 할 수 있게 만들어주는 기능이 바로 '브랜치(Branch)' 이다.
- 팀 프로젝트를 수행할 때 GitHub를 관리하기 위해선 깃 브랜치 전략이 필수적이다.
- Git에선 Master라는 브랜치를 default로 사용하고, GitHub에선 Master 대신 Main을 사용한다.
- 여담이지만, GitHub에서 Master를 사용하지 않는 이유는 주종관계가 연상된다는 이슈로 Main을 사용한다는 썰이 있기도 하다.
- 사실 크게 의미는 없지만, 요즘 추세가 default를 Main으로 두고 사용하니 이 점, 참고 바랍니다.
- 브랜치 이름을 master에서 main으로 변경하는 방법은 'git branch -m master main' 명령어를 입력한다.
[git commit]
- commit은 Git 저장소에 사용자가 생성한 디렉토리 아래에 있는 모든 파일에 대한 스냅샷을 기록하는 것이다.
- commit은 의미있는 변경 작업들을 저장소에 기록하는 동작을 의미하며, 코드 변경 시점을 저장함으로써, 잘못된 동작을 발견했을 때는 특정 시점으로 돌아갈 수도 있다.
- commit은 새롭게 변경된 부분만 추출해서 저장한다.
- 단순히 'git commit' 명령어만 실행하면 vi 편집기 실행과 동시에 commit 메시지를 입력해야한다.
- 이 과정을 한 번에 처리하기 위해선 'git commit -m "메시지 내용"' 명령어를 실행하면 된다.
[git branch]
- 브랜치는 특정 커밋에 대한 참조라고 생각하면 좋고, 브랜치를 많이 생성해도 메모리나 디스크 공간에 크게 부담이 되지 않기 때문에 작은 단위로 잘게 나는 것이 좋다.
- 브랜치를 생성하는 방법은 'git branch '브랜치 명'' 명령어를 실행하면 된다.
[git checkout]
- 체크아웃은 저장소에서 특정 커밋이나 브랜치로 돌아가고 싶을 사용한다.
- 쉽게 말하자면 현재 브랜치에서 원하는 브랜치로 이동할 때 체크아웃을 사용한다.
- 브랜치를 이동하는 방법은 'git checkout '이동하고자 하는 브랜치 명' 명령어를 실행하면 된다.
[git merge]
- merge는 병합이라는 뜻으로 작업 내용을 합치는 방법을 의미한다.
- 서로 다른 브랜치에서 작업을 했거나, 작업 내용을 합쳐야 하는 경우 merge를 해주면 된다.
- bugFix라는 브랜치와 main 브랜치가 있다고 가정해보자.
- 각 브랜치에는 독립된 커밋이 하나씩 존재하고, main 브랜치를 기준으로 두 브랜치를 병합하는 방법은 'git merge bugFix' 명령어를 실행하면 된다.
- 반대로 체크아웃을 이용해서 bugFix 브랜치로 이동한 뒤 main 브랜치와 병합을 하고 싶다면, 'git merge main' 명령어를 실행하면 된다.
[git rebase]
- 리베이스도 병합(merge)과 마찬가지로 한 브랜치에서 다른 브랜치를 합치는 방법 중 하나이다.
- 리베이스는 기본적으로 커밋들을 모아서 복사한 뒤, 다른 곳에 떨궈 놓는 것이라고 생각하면 좋다.
- 기본 명령어의 형태는 'git rebase '브랜치 명''이고, 여기에 -i 속성을 추가한 git rebase -i '브랜치 명'~4'와 같은 명령어를 사용하게 되면 리베이스의 목적지가 되는 곳(브랜치 명을 기준으로 4개 위) 아래에 복사될 커밋들을 모두 보여주고, 각 커밋을 구분할 수 있는 해시들과 메시지도 함께 vi 편집기를 통해 볼 수 있다.
- 이 때 편집기를 통해 기존의 있던 커밋을 순서를 바꾸거나 원하지 않는 커밋들을 제외해서 리베이스(복사)를 할 수 있다.
[git cherry-pick]
- 체리픽은 다른 브랜치에 있는 커밋을 선택적으로 내 브랜치에 적용시킬 때 사용한다.
- 'git cherry-pick <커밋이름> <커밋이름> ...' 명령어를 사용하여 현재 내가 사용하는 브랜치 기준으로 명령어에서 선택한 커밋을 복사할 수 있다.
[git reset, revert]
- 리셋은 이전 커밋으로 돌리는 방법 중 하나이다.
- 돌아가고 싶은 커밋으로 갈 때 사용하거나, main 브랜치로 릴리즈를 했는데 치명적인 버그로 인하여 롤백해야하는 경우에 해당 명령어를 사용한다.
- 'git reset HEAD~1' 명령어를 실행하면 현재 HEAD에서 가리키던 커밋을 바로 직전에 커밋으로 옮긴다.
- 리버트는 리셋과는 다르게 커밋을 삭제하는 것이 아닌 커밋을 추가하지만 이전 커밋과 정반대의 데이터를 추가하는 방식으로 코드를 되돌리는 역할을 한다.
- 'git revert HEAD' 명령어를 실행하면 현재 커밋에서 커밋을 삭제하지 않고 새로운 커밋이 생성되어 변경 내용이 기록되는데, 해당 변경내역이 정확히 반대의 내용을 담고있다.
[참고 사이트]
- 깃 브랜치의 명령어와 관련된 연습을 해보고 싶으시다면 아래 URL을 참고하셔도 좋을 것 같습니다.
- 참고 URL : https://learngitbranching.js.org/?locale=ko
Learn Git Branching
An interactive Git visualization tool to educate and challenge!
learngitbranching.js.org
반응형
'GitHub' 카테고리의 다른 글
[GitHub] 깃허브 협업 (0) | 2024.05.30 |
---|---|
[GitHub] Git 인터렉티브 실습 (0) | 2024.05.21 |
[GitHub] 깃허브 세팅 명령어 (0) | 2024.02.19 |