Git Branch

이다연·2021년 4월 20일
0

Git & GitHub

목록 보기
8/8

Branch

하나의 코드 관리 흐름

나뭇가지처럼
맨처음 커밋은 root commit
이를 시작으로 브랜치로 갈라짐

on branch master
레포지토리를 만들고 커밋을 하면 자동으로 생기는 브랜치
(기본, 큰 줄기)

git branch

브랜치 만들기

git branch branch_name

브랜치로 이동하기
git checkout branch_name 이후에 git status 로 어느 브랜치에 와있는지 확인가능
앞으로 작업하고 커밋하면 새로운 브랜치에만 반영됨

브랜치 조회

git branch

git branch -d 삭제할 브랜치

새로 브랜치를 만들고 바로 이동하는 방법

git checkout -b 브랜치이름

branch merge

다른 브랜치에서 했던 머지 가져오고 싶을 때

(현재 합치고자 하는 branch에서)
git merge master

e.g.
현재 base 라는 브랜치에 있고, extra라는 브랜치를 합병하고자 한다.
git merge extra

머지가 성공적이라면 커밋메세지 쓰는 창이 뜸
:w (저장)

merge 시 conflict 있을 수 있음

같은 내용에 다른 수정사항이 있을 때
1. 컨플릭트가 발생한 파일은 연다.
2. 머지의 결과가 되었으면 하는 모습대로 코드를 수정
3. 커밋

만약 수정하지 않고 merge 자체를 취소하려면
git merge --abort


origin: remote repo - main: branch

git remote add origin [github 상 프로젝트주소]

  • origin: [github 상 프로젝트주소]가 가리키는 리모트 레포지토리를 origin이라는 이름으로 내 컴퓨터에 등록함. 관례적으로 'origin'이라는 단어를 사용함.

이 커맨드에서 remote는 리모트 레포지토리에 관한 작업을 할 때 쓰는 커맨드입니다.

그리고 그 뒤의 add는 새로운 리모트 레포지토리를 등록하겠다는 뜻입니다.

그 다음에는 origin https://github.com/kyuri-dev/Math_Box.git이라고 써있죠?

이 표현은 https://github.com/kyuri-dev/Math_Box.git 리모트 레포지토리를

origin이라는 이름으로 등록하겠다는 뜻

git push -u origin master

현재 로컬 레포지토리에 있는 master 브랜치의 내용(=master 브랜치와 관계된 모든 커밋들)을 origin이라는 리모트 레포지토리로 보낸다는 뜻입
이때 같은 이름의 브랜치로 전송하게 되는데 만약 origin이라는 리모트 레포지토리에 master 브랜치가 없으면 master 브랜치를 새로 생성하고 푸시합니다.

tracking connection

옵션 -u: --set-upstream(-u)

로컬 레포지토리에 있는 master 브랜치가 origin에 있는 master 브랜치를 tracking(추적)하는 걸로 설정

로컬 브랜치에 대응되는 리모트 브랜치를 upstream 브랜치라고 함.

로컬에서 새로만든 브랜치 푸시

fatal: The current branch premium has no upstream branch.
To push the current branch 
and set the remote as upstream,
use git push --set-upstream origin premium
  • set upstream 이용해 tracking conecton 을 설정해줘야 함. 이후 부터 git push, pull 사용가능

HEAD와 branch의 관계

HEAD는 어떤 커밋을 가리키는 존재(포인터)
Head의 위치에 따라 워킹 디렉토리의 내용이 바뀜
보통 직접 커밋을 가리키지 않고, 브랜치를 통해 간접적으로 커밋을 가리킴.

HEAD
 |
branch
 |
commit

Branch는 코드 관리 흐름, 커밋을 가리키는 존재(포인터)
과거 커밋 정보를 모두 가지고 있음

머지커밋: 분기 이후, 헤드가 가리키던 커밋에 다른 브랜치가 가리키던 커밋을 합쳐서 새로운 커밋을 만드는 작업

정리노트

git branch [새 브랜치 이름] : 새로운 브랜치를 생성

git checkout -b [새 브랜치 이름] : 새로운 브랜치를 생성하고 그 브랜치로 바로 이동

git branch -d [기존 브랜치 이름] : 브랜치 삭제

git checkout [기존 브랜치 이름] : 그 브랜치로 이동

git merge [기존 브랜치 이름] : 현재 브랜치에 다른 브랜치를 머지

git merge --abort : 머지를 하다가 conflict가 발생했을 때, 일단은 머지 작업을 취소하고 이전 상태로 돌아감
profile
Dayeon Lee | Django & Python Web Developer

0개의 댓글