본문 바로가기
풀데브코스

Git고급

by woody-j 2024. 3. 4.

1. 깃 브랜치

여기서 중간의 메인 브랜치를 통합 브랜치, 중간중간 뻗어나간 브랜치들을 토픽 브랜치라고 한다.

  • 주요 브랜치:
    • master: 제품으로 출시되는 브랜치
    • develop: 다음 릴리즈를 위해 개발하는 브랜치
  • 보조 브랜치:
    • feature: 새로운 기능 개발
    • release: 다음 버전을 위한 테스트와 버그 픽스
    • hotfix: 프로덕션에서 발생한 긴급한 버그 픽스

2. 브랜치 복사

2.1. 브랜치 생성 시점

일반적으로 브랜치를 생성할 때는 마지막 커밋을 기준으로 한다

 

*브랜치를 복사한다고 해서 바로 branch가 되는 것이 아니라, commit을 한 순간 부터 브랜치에 복사가 된다.

 

2.2. 깃허브에서 브랜치 확인

git branch -r

2.3. 깃에서 브랜치 확인

git branch


2.4. 깃(로컬)에서 브랜치 생성

git branch [브랜치명]
git branch firstBranch
git checkout firstBranch
git commit -m "firstCommit"


2.5. 깃허브에 브랜치 생성 및 복제

 git push [깃허브별칭] [깃브랜치명]

2.6. 깃에 브랜치 삭제

git branch -d

 

2.7. 깃허브에 삭제한 브랜치 깃에서 동기화

git fetch -p

3. 브랜치 전환

3.1 깃에서 브랜치 전환

git checkout [브랜치명]

 

주의 할 점 :

현재 브랜치에서 커밋하지 않은 변경 사항이 있다면 브랜치를 전환 할 수 없다.

 

[해결방안]

- 커밋을 하고 전환

- * stash로 명령어로 변경 사항을 임시 저장하고 브랜치 전환

git stash

* commit 이후로 변경된 모든 사항들이 stash 공간으로 이동

https://velog.io/@jhyeom1545/Git-Github-stash-%EC%82%AC%EC%9A%A9-%EB%B0%A9%EB%B2%95-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0

 

3.1 깃허브있는 브랜치 전환

git checkout -t [브랜치명]

4. 브랜치 전략 (깃 플로우)

4.1. fast forward

master 브랜치가 단순히 앞으로 이동하는 병합을 fast-forward 병합

깃에서 머지하는 방법 중 하나로, 브랜치를 머지할 때, 히스토리를 한 줄로 정리

이는 기본적으로 브랜치의 변경 사항을 다른 브랜치에 적용할 때 사용

 

 


4.2. 3-way (+ fast forward)

깃에서 머지하는 또 다른 방법으로, 3-way 머지는 두 브랜치의 공통 조상이 있는 경우에 사용

이 방법은 각 브랜치의 변경 사항과 공통 조상의 변경 사항을 비교하여 새로운 커밋을 생성

Fast forward 머지와 달리 브랜치 히스토리가 더 자세하게 기록된다.

 

5. rebase

 

이 상태에서 merge를 사용하면 non-fast-forward병합이 이루어진다.

그러나 rebase를 사용하면 다른 방법으로 브랜치를 병합할 수 있다.

rebase는 간단히 말해 issue1이 분기되는 커밋부터 마지막 커밋까지를 잘라서 master 브랜치의 끝에 붙이는 것!

즉, issue1 브랜치에 master의 최신 커밋을 반영한다고 말할 수 있다.

 

rebase를 할 때는 merge와는 반대로 issue1 브랜치에 HEAD를 둔 상태에서 아래 코드 입력

git rebase master

 

 issue1 브랜치 전체가 master 브랜치의 끝에 붙음으로써 master 브랜치의 최신 커밋이 반영

=> 이로써 issue1은 master의 모든 변경사항을 포함

 

여기서 master 브랜치로 이동한 후 merge하면 forward 병합이 일어나게 됩니다.

 

 

https://velog.io/@soonitoon/%EB%8B%A4%EC%8B%9C-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-Git-GitHub-%EA%B3%A0%EA%B8%89-1

 

다시 시작하는 Git, GitHub 고급 1

브랜치와 병합, 병합 시 충돌 처리

velog.io