[ 깃허브 ] github 브랜치 만들고 업로드 하기

Jalynne Kim
6 min readNov 13, 2020

--

안녕하세요. 오늘은 [ 깃허브(github) 브랜치 만들고 업로드하는 법]에 대해 소개하려 합니다.

구글 검색 ‘깃'
구글 검색 ‘깃허브'

깃 허브(github)는 분산버전관리 툴인 ‘깃’을 사용하는 프로젝트를 지원하는 웹호스팅 서비스입니다.

특히 여러 사람이 함께 작업할 때 수정사항들이 충돌하지 않도록 관리할 수 있고, 예전 버전의 기능을 복구해야 할 때에도 버전별 기록을 찾아 수정하기에 편리하다는 점에서 매우 유용한 서비스인 것 같습니다.

깃 허브 기능들은 매우 다양하기 때문에 오늘은 깃 레포지토리를 복사(clone)하고, 브랜치를 만들어 작업 후 최종 업로드하는 부분에 대해서 말씀드리겠습니다.

  1. 깃 흐름 (git flow)

오늘 말씀드릴 ‘브랜치 만들어서 작업하고, main(master브랜치)에 올리는 순서’를 간략히 도식화한 그림입니다.

깃허브에서 어떤 리포지토리(repository)의 주소를 복사해 clone을 해오면 그 리포지토리의 폴더와 파일이 작업자의 컴퓨터(로컬저장소)로 저장이 됩니다.

개인적으로 처음에 깃 명령어를 사용했을 때 굉장히 혼란스러웠던 부분이

“원격저장소와 로컬저장소 중 어디에서, 어떤 명령어를 실행해야 하는 거지…?” 였습니다.

“응? 나는 분명 파일 추가를 한 것 같은데.. 왜 깃허브에 없지???”

라던가,

“이상하네.. 분명 clone을 했는데 왜 파일이 없다고 뜨지..? (복사된 디렉토리로 터미널에서 이동을 안 한 것)”

등등..

몇시간씩 에러와 씨름을 하면서, 같이 공부하는 동기분들께 물어보며 git cheat sheet 이란 것을 발견하기도 해가면서..

“와.. 정말 이렇게 많은 기능이 있다고..??”

라고 소오름..을 느끼기도 하며 조금씩 깃과 친해지고 있는 중인 것 같습니다^^

아무튼, 위와 같은 실수담의 포인트는

‘로컬저장소에서도 내가 클론한 디렉토리에서 작업을 진행해줘야 한다는 점, 그리고 원격저장소의 어느 브랜치에 내가 업로드를 했는지, 최종 올리고자 하는 브랜치는 어디이고 어떤 명령을 실행해야 하는지 깃 흐름을 명확하게 알고 작업해야 한다는 점’

입니다.

2. 브랜치(branch) 만들어 업로드 하는 방법

우선 깃허브 리포지토리 주소를 clone하여 로컬저장소(내 컴퓨터)에 복사를 해왔다면, cd(change directory의 약자) 명령어로 작업할 디렉토리로 이동합니다.

cd example (<-클론한 폴더명)

그 다음 깃 브랜치를 만듭니다.

git checkout ex (<-브랜치명) : 브랜치로 이동. 
git checkout -b ex : 브랜치 생성 후 해당 브랜치로 이동.

이때 만들어진 브랜치는 ‘로컬저장소(내 컴퓨터)’에 만들어집니다. (깃허브에는 아직 없습니다.) 아래 명령어로 브랜치 상태를 확인할 수 있습니다.

git branch -r : 원격저장소(깃허브) 브랜치 상태 확인
git branch -a : 로컬저장소(내 컴퓨터) 브랜치 상태 확인

녹색 부분 ‘ex’ 브랜치가 로컬저장소에 생성된 화면입니다.

이제 로컬저장소의 브랜치 (ex)를 깃허브의 브랜치(remote branch)와 연결하겠습니다. 이렇게 연결을 해야 최종적으로 올리고자 하는 깃허브의 브랜치에 업로드할 수 있습니다.

git branch --set-upstream-to origin/main (<-연동할 브랜치명) 

그 다음 깃허브의 브랜치에 변경사항이 있을 경우, fetch 명령어를 통해 깃허브의 변경사항을 로컬저장소로 불러옵니다. 깃허브 브랜치(remote branch)에서 변경사항이 있는데 그 변경사항을 로컬저장소의 브랜치(local branch)의 변경사항과 합치지 않고 로컬의 작업물을 올릴 경우 충돌이 일어나기 때문입니다.

git fetch (깃허브 브랜치 주소)

그 다음, 작업한 파일을 로컬 저장소의 깃 위치에 추가하고 기록(commit)합니다.

git add test.py (<-파일명)
git commit -m test (<- 커밋 명칭, 명칭을 넣지 않으면 커밋이 안됨)

이제 로컬에만 있는 깃 브랜치 (ex) 를 원격저장소 깃에 올립니다.

git push origin ex

이렇게하면 깃허브 브랜치에 ‘ex’라는 브랜치가 생깁니다.

그리고 최종적으로 올리고자 했던 깃허브 main 브랜치에 합쳐보겠습니다.

git merge origin/ex

그 다음, 최종적으로 깃허브 브랜치에 업로드합니다.

git push

로컬에서 추가했던 ‘test.py’파일이 원격저장소인 깃허브 브랜치에 업로드되었습니다. 첫번째는 main 브랜치, 두번째는 ex 브랜치 화면입니다.

사실 깃은 기능이 매우 많아서 자주 사용하는 기능이 아니라면 다루기가 어려운 것 같습니다.

하지만, 모든 기술과 기계들이 그렇듯이 활용의 관점으로 접근해서, 필요한 명령어들은 구글과 git cheat sheet 등을 통해 확인해 필요한 부분들만 적절히 활용한다면 매우 유용한 도구인 것 같습니다.

그럼 다음에도 흥미로운 글로 찾아뵙겠습니다.

감사합니다.

--

--

Jalynne Kim
Jalynne Kim

Written by Jalynne Kim

DataAnalystEngineer / GrowthHacker

No responses yet