일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- format 메서드
- 우분투
- 자기개발
- 스택
- 재귀 함수
- 이진 탐색
- 알고리즘
- git hub
- MiniHeap
- UNIX
- 파이썬
- 트리
- NQueen
- 분할 정복
- sys.stdin.readline()
- 배열
- 백준
- 문법
- 그래프
- Git
- 정렬
- IT
- 자료구조
- 동적 계획
- type 함수
- 기초
- 유닉스
- 순차 탐색
- 그리디
- 탐색
- Today
- Total
코딩고치
[Git] 브랜치 본문
브랜치
-
코드를 작성함에 따라 코드의 흐름이 달라질 수 있다. 이 각각의 흐름을 브랜치라고 한다.
-
처임 레포지토리를 만들고 커밋을 하면 기본적으로 생기는 브랜치를 master branch라고 한다.
-
위 사진에서 현재 master branch에 있음을 알 수 있다.
-
지금까지 커밋한 것이 하나의 흐름이고 이것이 branch이다.
-
git branch [브랜치 이름]을 입력하면 된다.
-
브랜치를 만든 후 작업을 하기 위해서 git checkout [브랜치 이름]을 입력하여 해당 브랜치로 이동해야 한다.
-
해당 브랜치로 이동하여 커밋을 하는 것은 master branch에는 영향을 주지 않는다.
-
파일을 수정한 후 해당 파일을 출력을 하면 master branch와 premium branch에서 출력 값이 다른 것을 확인할 수 있다.
-
현재 레포지토리에 있는 브랜치 조회
- git branch 입력
- 브랜치 삭제
- git branch -d [브랜치 이름]
- 브랜치를 만들면서 해당 브랜치로 이동
- git checkout -b [브랜치 이름]
브랜치 합치기
- master brunch에서 한 작업을 premium branch에 그대로 가져올 수 있다.
- git merge master : 현재 브랜치에 master branch에서 한 작업을 합친다.
- 위 명령어를 입력하면 나오는 창우로 커밋 메시지를 입력할 수 있다.
- 입력 후 :wq로 저장하여 나가면 된다.
오류가 나는 경우
-
master branch와 premium branch 각각에서 동일한 함수의 이름을 delete_free, delete_premium으로 바꾼 후 커밋
-
그 후 premium branch에서 master branch를 merge 하려고 하면 오류가 발생한다.
-
소스 코드를 확인하면 다음과 같이 나타나게 된다.
-
충돌을 해결하려면 소스 코드에서 함수 이름을 다시 원하는 대로 바꾸고 저장 후 커밋을 하면 된다.
-
merge 자체를 취소하려면 git merge --abort를 입력해 주면 된다.
git hub에 push 하기
- 현재 리모트 레포지토리 (git hub의 레포지토리)는 이전 단계의 커밋에 머물러 있다.
- git hub에 업데이트하려면 master branch와 premium branch에서 각각 push를 해주어야 한다.
- master branch에서는 push가 정상적으로 작동하고 리모트 레포지토리의 head도 최신 커밋을 가리키고 있다.
- premium branch에서의 경우에는 에러가 발생한다.
- 리모트 레포지토리에는 premium branch가 생성되어 있지 않기 때문
- git push --set-upstream origin premium을 입력하여 생성해 주어야 한다.
- 위 명령어를 입력하면 리모트 레포지토리에도 premium branch가 생긴다.
- git hub에 접속하여 확인하면 branch가 2개가 되어 있고 그 안에 premium branch가 생긴 것을 볼 수 있다.
head가 가리키는 것
- head가 가리키는 것은 브랜치를 가리킨다.
- 브랜치는 커밋을 가리킨다.
- 이로 인하여 head가 커밋을 가리키는 것처럼 보인다.
-
git reset을 하면 브랜치가 가리키는 커밋이 달라져 결과적으로 head가 가리키는 커밋도 달라진다.
-
git checkout를 이용하여 head가 가리키는 브랜치를 바꿔주었다. 하지만 이것을 이용하여 직접 head가 특정 커밋을 가리키게 할 수 있다.
- git checkout [커밋 아이디]
- head가 해당 커밋을 가리킨다. 이를 detached head라고 말한다.
- 이 상황에서 새로운 브랜치를 만들고 head가 그 브랜치를 가리키게 하면 3번 커밋을 시작으로 새로운 브랜치가 시작된다.
'Git' 카테고리의 다른 글
[Git] 커밋 취소하기 (0) | 2020.05.11 |
---|---|
[Git] git fetch (0) | 2020.05.11 |
[Git] 커밋 (0) | 2020.05.05 |
[Git] 커밋 히스토리 (0) | 2020.05.04 |
[Git] 다른 사람의 프로젝트 가져오기 (0) | 2020.05.04 |