[Git (9)] Git Branch(1) - 기초(Branch 생성 및 사용)
안녕하세요. 갓대희 입니다. 이번 포스팅은 [ git branch 생성 및 사용하기 ] 입니다. : )
1. Git Branch란?
※ Branch란?
- Software개발시 개발자들은 동일한 소스코드 위에서 신규 개발, 버그 수정 등의 업무를 협업하곤 한다. 이럴 때, 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능이 "Branch" 이다.
즉, 브랜치(Branch)를 통해 하나의 프로젝트를 여러 갈래로 나누어서 관리할 수 있다. 각각의 독립된 Branch에서 마음대로 소스코드를 변경하여 작업 한 후 원래 버전과 비교하여 또 하나의 새로운 버전을 만들어 낼 수 있다.
▶ 1. Branch 확인 하기
1) 현재 내가 위치한 Branch 확인
#git branch
- 현재는 master 브랜치만 존재 한다. (master :최초 레포지토리 생성후 커밋하면 자동으로 생기는 브랜치)
- *가 붙어있는 브랜치가 현재 활성화된 브랜치이다.
#git status
- On branch master > 마스터 브랜치 위에 있다.
2) 원격 저장소의 브랜치 확인
#git branch -r
3) 브랜치의 마지막 커밋 메세지 확인
git branch -v
▶ 2. Branch 생성 및 이동
2.1 첫번째 방법
1) Branch 생성하기
- git branch 브랜치명
ex)
#git branch test
2) 생성한 Branch로 이동하기
- git checkout [브랜치명]
※ git 2.23버전 부터 git checkout을 대신하여 switch와 restore가 나오게 되었다.
checkout의 기능이 너무 많아 분리하였다고 볼 수 있다.
- checkout: Switch branches or restore working tree files
- switch: Switch branches
- restore: Restore working tree files
- git switch[브랜치명]
ex)
#git switch test
2.2 두번째 방법
1) 브랜치를 새로 만들면서 브랜치 변경
- git checkout -b 브랜치명
※ 브랜치를 만들면서 브랜치 변경하는 명령어도 변경 되었다.
- $ git switch -c [브랜치명]
ex)
#git switch -c test2
2.3 git switch -t orogin/[원격브랜치명]
- 원격 브랜치와 같은 이름으로 로컬 브랜치를 생성하고 스위치 할 수 있다.
▶ 3. git 변경사항 복원
1) git restore
- 작업중인 파일(변경 내역이 있는 파일)을 복원할 수 있다.
ex)
#git restore .
#git restore App.js
2) git restore --staged
- stage된 파일도 복구할 수 있다. (예전엔 git reset HEAD 파일명 으로 복구할 수 있었다.)
ex)
$ git restore --staged .
$ git restore --staged App.js
▶ 4. Branch 삭제
1) git branch -d 브랜치명
ex)
#git branch -d test2
2) git branch -D 브랜치명
- 다음과 같이 머지가 정상적으로 지 않았거나, 충돌이 해결되지 않은 브랜치는 오류메세지가 발생한다. 이런경우 강제로 삭제할때 -D 옵션을 사용한다.
error: The branch ‘branch' is not fully merged.
If you are sure you want to delete it, run 'git branch -D branch'.
3) git push origin --delete [브랜치명]
- 원격 브랜치를 삭제할 경우 사용 가능하다.
▶ 5. 생성한 Branch를 원격 Repository에 push 하기
1) 생성한 branch로 이동
ex) > checkout은 switch로 대체 되었다.
#git switch test
#git push
- 현재 원격 레포지토리(github)에는 master branch밖에 없는 상태이고, test branch로 이동하여 push를 하면 오류가 발생한다.
- 로컬 레포지토리를 리모트 레포지토리로 처음 push할때는 --set-upstream 옵션을 줘야 한다.
그래야 tracking 정보 설정이 되어 git push만 사용해도 push가 된다.
- 위의 메세지 처럼 --set-upstream 옵션을 사용해 보자.
#git push --set-upstream origin test
위 명령어는 다음과 같이 줄여서도 실행 가능하다.
#git push -u origin test
- github 페이지로 가서 결과를 확인해보면 신규 branch가 생성되어, 총 2개의 브랜치로 늘어난 것을 볼 수 있다.
- 신규 branch > push 이전
- 신규 branch > push 이후
이로써 기본적으로 git branch 생성, 삭제, 이동 하는 방법을 알아 보았다.
출처: https://goddaehee.tistory.com/274
[갓대희의 작은공간]
마스터 브랜치(Master Branch)
: 저장소를 처음 생성하게 되면 깃은 'Master'라는 이름의 브랜치를 자동으로 생상허게 됩니다. 따로 새로운 브랜치를 생성하지 않으면 저장소에 새로운 파일을 추가하는 것이나 소스코드를 수정하여 커밋하는 작업 모두 마스터 브랜치를 통해 이루어지게 됩니다.
통합 브랜치(Integration Branch)
: 언제든 배포할 수 있는 버전을 만들 수 있어야 하는 브랜치가 통합 브랜치 입니다. 따라서 안정적인 상태, 즉 모든 기능이 정상적으로 동작하는 상태가 되어있어야 합니다. 만약 버그를 수정하거나 새로운 기능을 추가해야 한다면 통합 브랜치가 아닌 토픽 브랜치를 만들어 사용합니다. 일반적으로 마스터 브랜치를 통합 브랜치로 사용합니다.
토픽 브랜치(Topic Branch)
: 기능 추가나 버그 수정과 같은 단위 작업을 위한 브랜치를 토픽 브랜치라고 합니다. 토픽 브랜치는 보통 통합 브랜치로부터 파생해서 생성하고, 특정 작업이 완료되면 통합 브랜치에 병합하는 방식으로 작업하게 됩니다. 토픽 브랜치를 피처 브랜치(Feature Branch)라고 하기도 합니다.
체크 아웃(Checkout)
: 깃에서는 항상 작업할 브랜치를 미리 선택해야 합니다. 맨 처음에는 마스터 브랜치가 선택되어 있는데 다른 브랜치로 전환하여 작업할 때 사용하는 명령어가 체크 아웃(Checkout) 입니다.
헤드(Head)
: 헤드는 현재 사용 중인 브랜치의 선두 부분을 나타내는 이름입니다. 기본적으로는 마스터의 선두 부분을 나타냅니다.
스태시(Stash)
: stash 란, 파일의 변경 내용을 일시적으로 기록해두는 영역입니다.
커밋하지 않은 변경 내용이나 새롭게 추가한 파일이 인덱스와 작업 트리에 남아 있는 채로 다른 브랜치로 체크아웃하면, 그 변경 내용은 이전 브랜치가 아닌 체크아웃하여 전환한 브랜치에서 커밋할 수 있습니다. 단, 커밋 가능한 변경 내용 중에 전환된 브랜치에서도 한 차례 변경이 되어 있는 경우에는 체크아웃에 실패할 수 있습니다. 이 경우 이전 브랜치에서 커밋하지 않은 변경 내용을 커밋하거나, stash 를 이용해 일시적으로 변경 내용을 다른 곳에 저장하여 충돌을 피하게 한 뒤 체크아웃을 해야 합니다.
머지(Merge)
: merge 를 사용하면, 여러 개의 브랜치를 하나로 모을 수 있습니다.
리베이스(Rebase)
: 통합 브랜치에 토픽 브랜치를 통합한다는 점에서 머지와 비슷하지만 특징이 약간 다릅니다. Merge는 변경 내용의 이력이 모두 남아 있어서 이력이 복잡해지지만, Rebase는 이력이 단순해지지만, 원래 커밋 이력이 변경됩니다. 정확한 이력을 남겨둬야 할 필요가 없을 경우 사용합니다.
출처: https://ebbnflow.tistory.com/197 [삶은 확률의 구름]
'백엔드' 카테고리의 다른 글
비주얼 스튜디오 (JWT 유지) 안드로이드 스튜디오 : 로그인 안풀리게 하기/ 로그인 유지 / 로그인 계속 유지/ 로그인 유지/억세스 토큰 유지/억세스 토큰 (0) | 2022.03.16 |
---|---|
백엔드 : 네이버 API 추가로 쓰고싶은 방법 (0) | 2022.01.14 |
백엔드 : 네이버 파파고 API 사용하는 방법 2번째 (0) | 2022.01.14 |
백엔드 : 네이버 파파고 API 사용하는 방법 (0) | 2022.01.14 |
백엔드 : AWS rekognition 실수 2가지 모음 (0) | 2022.01.14 |