고기 대신 SW 한점/GIT

[git] Branch 브랜치 끝장내기 2

지식한점 2022. 10. 20. 21:41
반응형

Branch 끝장내기 1에서 기본적인 Branch 명령어를 정리하였습니다.

이번엔 원격 브랜치에 대해서 간단히 정리하도록 하겠습니다.

 

깃은 다수의 개발자와 협업으로 코드를 유지할 수 있습니다. 주요 개발 작업들은 로컬 저장소에서 하지만 협업은 원격 저장소도 공유 합니다.

로컬 저장소도 하나의 저장소이고, 원격 저장소도 하나의 저장소 입니다. 깃은 분산형 버전 관리로서 다수의 저장소를 만들어 연결할 수 있기 때문입니다. 이번에는 브랜치를 이용하여 협업하는 것을 정리합니다.

 

원격 브랜치를 제공하는 git hosting 업체중 대표적인 회사가 github입니다.

추후에 github enterprise에 대해서 정리하도록 하겠습니다.

 

1. 리모트 브랜치

저장소는 각자의 고유한 브랜치를 생성하고 관리합니다. 원격 저장소에 생성한 브랜치를 리모트 브랜치라고 합니다.

로컬 저장소에 생성한 브랜치는 서버로 공유할 수 있습니다. 별도 명령을 실행하여 저장소를 동기화해야 합니다.

원격 저장소와 로컬 저장소의 브랜치 이름은 보통 같지만, 반드시 일치하지 않아도 됩니다.

 


원격 저장소 등록
$ git remote add origin https://github.com/jinygit/gitstudy06.git



원격 저장소 목록
$ git remote -v

 

 

2. 브랜치 추적

원격 브랜치 정보
$ ls .git/refs

 

 

 3. 브랜치 upload

로컬 저장소의 브랜치 정보는 원격 저장소에 자동으로 등록되지 않습니다.

등록된 원격 저장소의 리모트 브랜치는 remote show 명령어로 확인할 수 있습니다.

등록된 원격 저장소의 리모트 브랜치 확인
$ git remote show orgin

 

리모트 브랜치는 서버간에 통신을 하고 나서 생성됩니다.

로컬 저장소의 브랜치를 원격 저장소에 동기화하려면 푸시 작업을 해야 합니다.

$ git push 원격저장소별칭 브랜치 이름

master 브랜치 전송
$ git push -u origin master

git push -u origin master 명령어는 '선택한 브랜치(master)를 원격 서버(origin)로 전달한다'는 의미 입니다.

 

 

$ git push origin master:product

깃은 서로 다른 로컬 브랜치와 리모트 브랜치를 수동으로 지정하여 연결할 수 있습니다. 브랜치를 직접 수동으로 지정할 때는 콜론(:)으로 구분합니다.

 

 

 

원격 저장소의 리모트 브랜치 목록 확인
$ git branch -r 


모든 브랜치 정보를 확인
$ git branch -r


트래킹 브랜치 목록
$ git branch -vv

 

 

4. 원격 브랜치 복사

원격 저장소와 로컬 저장소의 브랜치 목록은 서로 다를 수 있습니다. 다른 개발자가 원격 저장소에 새로운 리모트 브랜치를 생성할 수 있기 때문입니다. 이렇게 생성된 원격 저장소에 새로운 리모트 브랜치를 생성할 수 있기 때문입니다.

이렇게 생성된 원격 저장소의 리모트 브랜치를 이용하여 로컬 저장소에도 새로운 브랜치를 생성하여 동기화 할 수 있습니다.

 

$ git checkout -b 새이름 origin/브랜치이름


브랜치 생성 및 이동
$ git checkout -b xyz origin/xyz

원격 저장소의 브랜치 정보를 로컬 저장소로 가져오기

 

 

5. 업스트림 연결

기존에 있는 브랜치를 업스트림으로 직접 설정할 수도 있습니다.

 

$ git branch -u origin/브랜치이름

 

-u 옵션은 --set-upstream-to의 약자입니다. 기존 브랜치를 특정 원격 브랜치로 추적합니다. 한 번만 실행하면 이후로는 계속 업스트림으로 설정되어 작업할 수 있습니다.

 

 

6. 브랜치 전송

로컬 저장소의 브랜치를 원격 저장소로 전송하는 다른 방법을 정리

 

$ git push --set-upstream origin master

처음에는 커밋과 브랜치를 푸시하는 데 업스트림 설정이 필요합니다. 원격 저장소 연결만으로 업스트림이 자동으로 설정되지는 않습니다. 이는 깃이 원격 저장소의 어느 브랜치에 어떻게 푸쉬해야 할지 모르기 때문입니다.

반응형

'고기 대신 SW 한점 > GIT' 카테고리의 다른 글

[git] Branch 브랜치 끝장내기 1  (0) 2022.10.20
[Git]Conflict(충돌) 해결하기  (0) 2022.10.07
[Git] 개념잡기 1 (시작하기)  (1) 2022.10.07
[Git]cherry-pick : 끝장내기  (0) 2022.10.06
SW version 관리  (0) 2022.09.28