Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Names
- 문자열처리
- c()
- ROTTEN TOMATOES
- TXT
- seq
- Data Structure
- length
- vector 비교
- vector 연산
- 데이터 입출력
- CSV
- 스크래핑
- REP
- R 기초
- :
- 네이버 영화 댓글
- 변수 선언
- 연습문제
- scraping
- 정규표현식
- 데이터 타입의 우선순위
- data frame
- 함수
- R 개요
- 데이터 타입
- factor
- stringr
- working directory
- Crawling
Archives
- Today
- Total
study blog
Git branch 본문
Git 개발 흐름에서 branch는 매우 중요하다.
독립적인 개발환경을 제공하여 동시에 다양한 작업을 진행할 수 있도록 만들어준다.
일반적으로 branch의 이름은 해당 작업을 나타낸다.
1. 기초 명령어
$ git branch # branch 목록 확인
$ git branch {브랜치이름} # {브랜치이름} 생성
$ git checkout {브랜치이름} # {브랜치이름}으로 이동
$ git branch -d {브랜치이름} # {브랜치이름} 삭제
$ git checkout -b {브랜치이름} # {브랜치이름} 생성 및 이동
- branch 병합
(master) $ git merge feature
# master 브랜치로 feature 브랜치 이력 가져오기(병합)
2. 상황별 branch 처리 방법
상황 1. fast-foward
-
feature/test branch 생성 및 이동
$ git checkout -b feature/test
-
작업 완료 후 commit
$ touch test.txt $ git add . $ git commit -m 'test 기능 개발 완료'
$ git log --oneline de7c1cf (HEAD -> feature/test) test 기능 개발 완료 f653956 (testbranch, master) Testbranch -test 97871d5 (origin/master) 집 - main.html c1e3b55 멀캠 - index.html
-
master 이동
$ git checkout master
$ git log --oneline f653956 (HEAD -> master, testbranch) Testbranch -test 97871d5 (origin/master) 집 - main.html c1e3b55 멀캠 - index.html
-
master에 병합
$ git merge feature/test Updating f653956..de7c1cf # Fast-forward test.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test.txt
-
결과 -> fast-foward (단순히 HEAD를 이동)
$ git log --oneline de7c1cf (HEAD -> master, feature/test) test 기능 개발 완료 f653956 (testbranch) Testbranch -test 97871d5 (origin/master) 집 - main.html c1e3b55 멀캠 - index.html
-
branch 삭제
$ git branch -d feature/test
상황 2. merge commit
feature 브랜치에서 작업하고 있는 동안,
master 브랜치에서 이력이 추가적으로 발생한 경우
-
feature/signout branch 생성 및 이동
$ git checkout -b feature/signout
-
작업 완료 후 commit
$ touch signout.txt $ git add . $ git commit -m 'Complete signout'
$ git log --oneline 8ed4f94 (HEAD -> feature/signout) Complete signout de7c1cf test 기능 개발 완료 f653956 Testbranch -test 97871d5 (origin/master) 집 - main.html c1e3b55 멀캠 - index.html
-
master 이동
$ git checkout master
-
master에 추가 commit 이 발생시키기!!
-
다른 파일을 수정 혹은 생성하세요!
$ touch master.txt $ git add . $ git commit -m 'Update master'
$ git log --oneline ee70154 (HEAD -> master) Update master de7c1cf test 기능 개발 완료 f653956 Testbranch -test 97871d5 (origin/master) 집 - main.html c1e3b55 멀캠 - index.html
-
-
master에 병합
(master) $ git merge feature/signout hint: Waiting for your editor to close Merge made by the 'recursive' strategy. signout.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 signout.txt
-
결과 -> 자동으로 merge commit 발생
-
그래프 확인하기
$ git log --oneline --graph * eae24ee (HEAD -> master) Merge branch 'feature/signout' |\ | * 8ed4f94 (feature/signout) Complete signout * | ee70154 Update master |/ * de7c1cf test 기능 개발 완료 * f653956 Testbranch -test * 97871d5 (origin/master) 집 - main.html * c1e3b55 멀캠 - index.html
-
branch 삭제
$ git branch -d feature/signout
상황 3. merge commit 충돌
-
hotfix/test branch 생성 및 이동
$ git checkout -b hotfix/test
-
작업 완료 후 commit
# 직접 test.txt 파일 수정 $ git add . $ git commit -m 'hotfix test' $ git log --oneline bff1eda (HEAD -> hotfix/test) hotfix test eae24ee (master) Merge branch 'feature/signout' ee70154 Update master 8ed4f94 (feature/signout) Complete signout de7c1cf test 기능 개발 완료 f653956 Testbranch -test 97871d5 (origin/master) 집 - main.html c1e3b55 멀캠 - index.html
-
master 이동
$ git checkout master
-
master에 추가 commit 이 발생시키기!!
- 동일 파일을 수정 혹은 생성하세요!
# test.txt 수정 $ git add . $ git commit -m 'master test'
-
master에 병합
(master) $ git merge hotfix/test Auto-merging test.txt CONFLICT (content): Merge conflict in test.txt Automatic merge failed; fix conflicts and then commit the result. (master|MERGING) $
- 결과 -> merge conflict발생
-
충돌 확인 및 해결
<<<<<<< HEAD 마스터 test 긴급 수정!! 성공했다!! ======= hotfix 브랜치에서 수정 우아아아! >>>>>>> hotfix/test
$ git status
On branch master
Your branch is ahead of 'origin/master' by 6 commits.
(use "git push" to publish your local commits)
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: test.txt
no changes added to commit (use "git add" and/or "git commit -a")
-
merge commit 진행
$ git add . $ git commit
* vim 편집기 화면이 나타납니다. * 자동으로 작성된 커밋 메시지를 확인하고, `esc`를 누른 후 `:wq`를 입력하여 저장 및 종료를 합니다. * `w` : write * `q` : quit * 커밋이 확인 해봅시다.
-
그래프 확인하기
$ git log --oneline ef816d8 (HEAD -> master) Merge branch 'hotfix/test' 25ca62c master test bff1eda (hotfix/test) hotfix test eae24ee Merge branch 'feature/signout' ee70154 Update master 8ed4f94 (feature/signout) Complete signout de7c1cf test 기능 개발 완료 f653956 Testbranch -test 97871d5 (origin/master) 집 - main.html c1e3b55 멀캠 - index.html
-
branch 삭제
$ git branch -d hotfix/test Deleted branch hotfix/test (was bff1eda).
Comments