본문 바로가기
IT

GitHub 브랜치 생성 및 작업 방법 - GUI와 CLI

by developer's warehouse 2024. 2. 26.

지난 시간에 github와 git의 브랜치 전략에 대해서 알아보았습니다. 그럼 이제 브랜치를 어떻게 생성하고 관리할 수 있는지 알아보도록 하겠습니다.

웹에서 GitHub 브랜치 생성 방법

원하는 저장소의 메인 페이지로 이동합니다.

테스트용 py-tpcc github 메인 페이지


파일 트리 뷰에서 브랜치 드롭다운 메뉴를 선택하고, 'View all branches’를 클릭합니다.

view all branches 보기


'New branch’를 클릭합니다.

New branch 버튼


'Branch name’에 브랜치 이름을 입력 힌 흐 'Branch source’에서 브랜치의 소스를 선택합니다.

test_1 신규 브랜치 생성 화면



'Create new branch’를 클릭하여 브랜치를 생성합니다.

신규 브랜치 생성하기

브랜치 삭제는 view all branches 화면에서 휴지통(🗑) 모양을 클릭하여 삭제할 수 있습니다.

github 사이트에서 휴지통으로 브랜치 삭제하기

명령행에서 GitHub 브랜치 생성 방법

원하는 저장소를 로컬 머신에 clone 하기 위해서 github에 해당 리포지토리로 이동합니다.

작업 후 Clone using the web URL에서 우측의 복사 버튼을 눌러서 https의 URL을 복사합니다.

github clone을 위한 https 주소

 

다음의 명령을 수행하여 로컬 디스크에 clone 합니다.

% git clone https://github.com/lswhh/py-tpcc.git
'py-tpcc'에 복제합니다...


명령행 앱을 열고, cd <file/path> 명령을 사용하여 복제한 저장소의 폴더로 이동합니다.

lswhh@DESKTOP-HQPQNKV:~$ git clone https://github.com/lswhh/py-tpcc.git
'py-tpcc'에 복제합니다...
remote: Enumerating objects: 1063, done.
remote: Counting objects: 100% (115/115), done.
remote: Compressing objects: 100% (58/58), done.
remote: Total 1063 (delta 73), reused 93 (delta 57), pack-reused 948
오브젝트를 받는 중: 100% (1063/1063), 4.82 MiB | 6.62 MiB/s, 완료.
델타를 알아내는 중: 100% (711/711), 완료.
lswhh@DESKTOP-HQPQNKV:~$ cd py-tpcc/
lswhh@DESKTOP-HQPQNKV:~/py-tpcc$ pwd
/home/lswhh/py-tpcc
lswhh@DESKTOP-HQPQNKV:~/py-tpcc$


git checkout -b [name_of_your_new_branch] 명령을 실행하여 새 브랜치를 생성하고 해당 브랜치로 전환합니다.

% git branch test-new-1
% git branch
* master
  test-new-1
% ~/temp/py-tpcc
% git switch test-new-1
'test-new-1' 브랜치로 전환합니다
% ~/temp/py-tpcc
% ~/temp/py-tpcc
% git checkout -b test-new-2
새로 만든 'test-new-2' 브랜치로 전환합니다
% git branch
  master
  test-new-1
* test-new-2

 

py-tpcc에 브랜치 test_1 추가 화면

 

명령행에서 지금까지 만든 브랜치는 github에 올라가지 않은 로컬 브랜치 상태 상태입니다.

이 상태에서 작업을 하고 한번에 원격 github로 푸시해도 됩니다만, 오래 작업해야 하는 경우에는 푸시를 해 놓고 작업하는 것이 좋습니다.


git push origin [name_of_your_new_branch] 명령을 실행하여 GitHub에 브랜치를 푸시합니다.

% git push origin test-new-1
Username for 'https://github.com': lswhh
Password for 'https://lswhh@github.com':
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote:
remote: Create a pull request for 'test-new-1' on GitHub by visiting:
remote:      https://github.com/lswhh/py-tpcc/pull/new/test-new-1
remote:
To https://github.com/lswhh/py-tpcc.git
 * [new branch]      test-new-1 -> test-new-1

 

푸시 완료 후에 github 사이트에서 브랜치를 확인해 보면 아래와 같이 브랜치가 추가되어있습니다.

브랜치 추가화면


참고로, 브랜치를 생성한 후에는 항상 해당 브랜치에 있는지 확인하고 커밋을 해야 합니다. 또한, 브랜치를 병합할 때는 항상 --no-ff 옵션을 사용하여 브랜치에 대한 기록이 사라지는 것을 방지해야 합니다

 

% git branch
  master
  test-new-1
* test-new-2

 

명령행에서 branch를 삭제하기 위해서는 다음과 같이 할 수 있습니다.

 

git branch -d [브랜치 이름] 명령을 실행하여 로컬 브랜치를 삭제합니다. 이 명령은 이미 병합된 브랜치를 삭제하는 데 사용됩니다.

그런데, 만약 아래와 같이 이미 checkout되어있는 경우 에러가 발생합니다.

% git branch -d test-new-2
error: '/home/lswhh/temp/py-tpcc' 위치에 체크아웃한 'test-new-2' 브랜치를 삭제할 수 없습니다

 

이 오류 메시지는 현재 'test-new-2' 브랜치에 체크아웃되어 있기 때문에 해당 브랜치를 삭제할 수 없음을 나타냅니다.

에러 시 다음과 같이 작업하시면 됩니다.

브랜치를 삭제하려면 먼저 다른 브랜치로 체크아웃해야 합니다. 예를 들어, 'master' 브랜치로 체크아웃하려면 다음 명령을 사용할 수 있습니다:

% git checkout master
'master' 브랜치로 전환합니다
브랜치가 'origin/master'에 맞게 업데이트된 상태입니다.

% git branch
* master
  test-new-1
  test-new-2
[altibase-KVM] altibase: ~/temp/py-tpcc


그런 다음 'test-new-2' 브랜치를 삭제할 수 있습니다:

% git branch -d test-new-2
test-new-2 브랜치 삭제 (과거 39ca2ab).


이렇게 하면 'test-new-2' 브랜치가 삭제됩니다.


git branch -D [브랜치 이름] 명령을 실행하여 강제로 브랜치를 삭제할 수 있습니다. 이 명령은 병합 상태와 관계없이 브랜치를 삭제하는 데 사용됩니다.

% git branch -D test-new-1
test-new-1 브랜치 삭제 (과거 39ca2ab).

 

위의 명령은 로컬 브랜치를 삭제하는 명령입니다. 원격 브랜치를 삭제하려면 아래 명령을 수행합니다.

git push origin --delete [브랜치 이름] 명령을 실행하여 원격 브랜치를 삭제합니다.

% git push origin --delete test-new-1
To https://github.com/lswhh/py-tpcc.git
 - [deleted]         test-new-1

 

브랜치 삭제후 화면

 

git과 github 브랜치 이름 규칙

지난 시간에 알아본 것 처럼 git이나 github에서는 develop이나 feature 등과 같은 브랜치를 둡니다. 하지만, git이나 github에는 따로 그런 기능이 있는 것은 아닙니다. 그냥 단순하게 이름 규칙을 두어서 사용합니다. 

 

예를 들어, “feature:” 접두사는 새로운 기능을 개발하는 브랜치임을 나타내고, “develop:” 접두사는 개발 중인 브랜치임을 나타낼 수 있습니다. 이러한 네이밍 컨벤션은 팀원들이 브랜치의 목적을 쉽게 이해할 수 있게 하며, 브랜치 관리를 더 효과적으로 할 수 있게 합니다

 

즉, 브랜치 이름에 “develop:”, “feature:” 등과 같은 접두사를 붙이는 것은 Git의 내부 동작에 직접적인 영향을 주지 않습니다. 이러한 접두사는 브랜치의 목적을 빠르게 식별하는 데 도움을 주는 네이밍 컨벤션입니다.

 


오늘은 github에서 브랜치를 만들고 삭제하는 법에 대해서 알아보았습니다. github는 소스코드 형상을 관리하기 위해서 매우 편리한 기능들을 무료로 제공합니다. 개발하시는 분들은 많이 사용하셔서 편리하게 작업하시기 바랍니다.

facebook twitter kakaoTalk kakaostory naver band shareLink