브랜치 관리
> git branch
hotfix
iss53
* master
testing
> git branch -v
hotfix 4e14b5a fix newFunction
iss53 3533c05 add newFunction
* master 760e43a resolve conflict
testing 7b0dbe6 fix newfile1
git branch 명령어를 통해 현재 저장소에 있는 브랜치들을 볼 수 있다. * 표시가 된 브랜치는 현재 작업대상이 브랜치라는 뜻이다. -v 옵션과 함께 하면 브랜치별 마지막 커밋 정보를 볼 수 있다.
> git branch --merged
hotfix
iss53
* master
> git branch --no-merged
testing
--merged와 --no-merged 옵션으로 현재 브랜치에 머지된 브랜치와 머지되지않은 브랜치를 확인할 수 있다.
> git branch -d testing
error: The branch 'testing' is not fully merged.
If you are sure you want to delete it, run 'git branch -D testing'.
> git branch -D testing
-d 옵션을 사용하면 브랜치를 삭제할 수 있다. 이때 머지되지않은 브랜치는 삭제할 수 없다고 나오는데 -D 옵션을 사용하면 강제로 브랜치를 삭제할 수 있다.
리모트 브랜치
> git branch
* master
> git remote show origin
* remote origin
Fetch URL: git@github.com:NanKisu/my_project.git
Push URL: git@github.com:NanKisu/my_project.git
HEAD branch: master
Remote branches:
dev new( next fetch will store in remotes/origin)
master tracked
...
리모트 저장소에는 로컬 저장소와는 또 다른 브랜치가 존재할 수 있다. 위를 보면 로컬에는 master 브랜치 밖에 없지만 리모트브랜치에는 master, dev 두개의 브랜치가 존재한다.
> git fetch origin dev
> git checkout --track origin/dev
> git branch
* dev
master
git fetch 명령어로 리모트 브랜치의 정보를 가져올 수 있다. 그리고 --trach 옵션과 함께 git checkout 명령어를 실행하면 리모트 브랜치와 연결된 로컬 브랜치가 생성이 된다.
리배이스
> git merge dev
> git log --graph --all
* commit 56e5aab299e9b1d68769f1d2481b1bbac700a36d (HEAD -> master)
|\ Merge: 8295d74 3a009a1
| | Author: nankisu <nankisu0301@naver.com>
| | Date: Wed Jan 18 17:35:34 2023 +0900
| |
| | resolve conflict
| |
| * commit 3a009a1adee6cb99534de28c2fd08232d366406c (dev)
| | Author: nankisu <nankisu0301@naver.com>
| | Date: Wed Jan 18 17:33:37 2023 +0900
| |
| | fix dev
| |
* | commit 8295d7467379d8439b3f6000ee0190aed0af455b
|/ Author: nankisu <nankisu0301@naver.com>
| Date: Wed Jan 18 17:33:55 2023 +0900
|
| fix master
|
*
여러 브랜치에서 작업을 하다보면 위처럼 브랜치가 갈라지고 합쳐지는 모습을 취하게 된다. 이는 git의 장점이기도 하지만 너무 많은 브랜치 분리와 합병은 git 저장소의 이력을 분석하기 어렵게 만든다.
> (dev 브랜치에서) git rebase master
> git checkout master
> git merge dev
> git log --graph --all
* commit 5f6d9e983625e029f3e194bae7810e7f9e287618 (HEAD -> master, dev)
| Author: nankisu <nankisu0301@naver.com>
| Date: Wed Jan 18 17:45:20 2023 +0900
|
| fix dev
|
* commit a2934ad1a7eaead65090d0f705ed5e4c23ca7b2f
| Author: nankisu <nankisu0301@naver.com>
| Date: Wed Jan 18 17:45:42 2023 +0900
|
| fix master
|
*
...
git rebase 명령어를 사용하면 분리된 브랜치에서 하나의 줄기로 작업한 것처럼 이력을 바꿀 수 있다. 이처럼 리배이스는 주로 로컬에서 작업 시 브랜치 흐름을 정리하기 위해 쓰인다.
728x90
'STUDY > GIT' 카테고리의 다른 글
5. Git 브랜치1 - 브랜치, 머지 (0) | 2023.01.18 |
---|---|
3. Git 기초2 - 커밋 히스토리, 되돌리기 (0) | 2023.01.13 |
2. Git 기초1 - 레포지토리, 라이프사이클 (0) | 2023.01.13 |
1. 시작하기 (0) | 2023.01.13 |