Skip to content
TUWLAB.com
모든 게시물에 대하여 '링크'
방식의 퍼가기만 허용합니다.
한양대학교 전자통신컴퓨터공학부
바라미
  • 650
  • 2573314
DNS Powered by DNSEver.com
일반

[GIT] Branch 관리하기: branch, checkout, push, pull

Posted 2014. 10. 23 Updated 2018. 02. 03 Views 48376 Replies 2


Branch 목록 보기


로컬 저장소의 Branch 목록 보기

git branch


원격 저장소의 Branch 목록 보기

git branch -r


모든 Branch 목록 보기

git branch -a


Branch 관리하기


현재 위치에서 새로운 Branch 생성하기

git branch {생성할 Branch 이름}


다른 Branch로 이동하기

git checkout {이동할 Branch 이름}

'다른 Branch로 이동한다'는 것은 현재 작업 디렉토리의 소스코드 상태를 해당 Branch의 상태로 모두 바꾼다는 것을 의미합니다. 따라서, Branch를 이동할 때마다 디렉토리 내에 있는 (추적중인) 파일들이 시시각각 변하게 됩니다.

시스템 입장에서는 파일들을 수정하고 새로 쓰거나 삭제하는 작업과 같이 때문에, Commit하지 않은 작업 내용이 있다면 Checkout을 할 수 없습니다. 작업 중에 다른 Branch의 상태를 보기 위해 임시로 Checkout하려면 Commit을 하거나 stash 명령을 이용해 작업 내용을 임시 저장한 뒤 Checkout 해야 합니다.

이동할 Branch 이름 대신 Commit ID를 입력하면 해당 Commit이 작성된 직후의 소스코드 상태로도 이동할 수 있습니다. 이는 Commit ID가 Branch별로 관리되는 것이 아닌, 하나의 GIT 저장소 전체 안에서 유일하도록 관리되기 때문에 가능한 것입니다.


Branch 이름 변경하기

git branch -m {기존 Branch 이름} {새로운 Branch 이름}


Branch 삭제하기

git branch -d {삭제할 Branch 이름}


원격 저장소의 Branch 관리하기


원격 저장소의 Branch 삭제하기

특이하지만, 원격 저장소의 Branch를 삭제하는 명령은 다름 아닌 push 명령입니다.

git push --delete {원격 저장소 별칭} {원격 Branch 이름}

예를 들어, origin 원격 저장소에 있는 'test'라는 이름의 Branch를 삭제하려면 다음과 같이 입력하면 됩니다.

git push --delete origin test


원격 저장소의 특정 Branch를 로컬 저장소의 새로운 Branch로 가져오기

이는 GIT을 활용한 협업 프로젝트에서 심심치 않게 자주 하게 되는 작업입니다.

예를 들어, 원격 저장소에 Push를 시도했는데 Reject당한 경우 원격 저장소의 대상 Branch를 로컬 저장소의 임시 Branch로 가져온 뒤, 병합이나 재정렬을 하고 다시 Push를 하는 순서로 작업을 진행합니다.

다음 세 명령어는 함께 묶어서 자주 사용되므로 눈여겨 봐 두면 언젠가 유용하게 활용할 수 있을 것입니다.

git checkout -b {새로운 로컬 Branch 이름} {원격 저장소 별칭}/{원격 Branch 이름}
git checkout {새로운 로컬 Branch 이름}
git pull origin {원격 Branch 이름}

이 명령어 세트의 사용 예시와 무엇을 하는지에 대한 설명은 다음과 같습니다.

git checkout -b temp origin/master
git checkout temp
git pull origin master

첫 번째 줄에서는 origin 저장소의 master Branch를 로컬 저장소로 가져오되, temp라는 이름의 새로운 Branch를 생성하여 가져옵니다. 다음 줄에서는 로컬 저장소의 temp Branch로 이동하고, 마지막 줄에서는 원격 저장소의 최신 변경사항을 가져와 현재 Branch인 temp에 반영합니다.

마지막 줄에서 Pull을 하는 이유는 checkout -b 명령을 수행할 때 대상 Branch를 과거에 이미 가져온 기록이 있을 경우 원격 저장소에서 가져오는 것이 아닌, Cache된 정보를 가져오기 때문입니다.


TAG •
서비스 선택
이용중인 SNS 버튼을 클릭하여 로그인 해주세요.
SNS 계정을 통해 로그인하면 회원가입 없이 댓글을 남길 수 있습니다.
댓글
?
Powered by SocialXE

  • 유진상유진상 2018.02.01 04:02:45
    깃을 새로운 깃으로 옮기려는데요 마스터는 기존에 마스터에서 리모트 url을 추가해 쉽게 옮겨졌는데요 브랜치들이 하나도 안옴겨졌어요 브랜치를 옮기려면 어떻게하야 할까요?

List of Articles
번호 분류 제목 글쓴이 최근 수정일 조회 수
193 Linux 한글 입력기 나비(Nabi)에서 한/영 키가 인식되지 않는 경우 file TUW 2017.06.02 2403
192 Linux [VirtualBox] Windows 7 물리 디스크 부팅 (Raw Disk Booting or Native Booting) - 방법 1 file TUW 2017.06.14 2946
191 Linux [Linux] Screen 터미널 에뮬레이션 프로그램 사용하기 TUW 2015.08.19 3042
190 Linux Intelli Backup: File system 및 Database 백업 자동화 Bash 스크립트 TUW 2017.06.14 3252
189 Linux [VirtualBox] 가상머신 Windows 7 에서 Aero 기능 활성화하기 file TUW 2017.06.02 3307
188 Python VirtualEnv를 통한 Python Sandbox 개발환경 구축하기 file TUW 2017.06.02 3763
187 Python [Django Tutorial] 7. 백엔드 콘솔에 Custom Command 추가하기 file TUW 2017.06.16 3773
186 일반 GitLab 코드리뷰 페이지 탭 크기(Tab Size) 4칸으로 바꾸기 file TUW 2021.12.28 3875
185 일반 [TeraTerm] 명령줄 인수와 공개키 인증으로 간편하게 SSH 접속하기 TUW 2018.11.06 4453
184 일반 Linux에서 Code Composer Studio (CCS) - Ti ARM 개발환경 구축하기 file TUW 2017.06.02 4626
183 일반 [GIT] 임시 저장소 사용하기: stash TUW 2015.11.27 4772
182 Python [Django Tutorial] 8. Production - setting.py설정, Static파일 모으기 TUW 2017.06.16 5005
181 Linux [VirtualBox] Windows 7 물리 디스크 부팅 (Raw Disk Booting or Native Booting) - 배경 file TUW 2017.06.02 5418
180 일반 [WSL] Windows Subsystem for Linux - Bash.exe를 Ubuntu와 유사하게 설정하기 file TUW 2021.12.28 5816
179 AVR [전자동 커튼] 2차 설치, 또 다시 발견된 문제점 file TUW 2017.06.02 5897
178 Python [Django Tutorial] 2. 개발 환경 세팅하기 - pyenv 및 virtualenv 활용 TUW 2017.02.26 6079
목록
Board Pagination Prev 1 2 3 4 5 6 7 ... 13 Next
/ 13

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5