[Git] branch

2021. 3. 29. 15:22·기타/git

 

 

브랜치는 포인터다.
HEAD는 현재 상태를 가리키는 포인터다.

When to use

같은 기능을 새 버전으로 재구성해보고 싶을 때

(귀차니즘 개발자들은, 그냥 있던 코드를 주석처리하고 새로 만들고 테스트한다. 간편하지만 지저분한 방법이다.)


같은 기능을 여럿이 만들고 비교하고 합쳐보고 싶을 때 쓴다.

 

📝 Tip.

보통 하나의 개발 브랜치는 한 사람만 작업해서 올리는 것이 좋다.

따라서, 여럿이 작업하는 Repository 에는 미리 브랜치 규칙을 정하길 권장한다.

 


 

Local 상에서 branch 명령어

이동 (전환)

$ git branch <target_branch_name>

 

목록 조회

$ git branch

 

삭제

$ git branch -d <target_branch_name>

 

생성

$ git branch <new_branch_name>

 

생성 + 이동

# 부모 브랜치는 Optional, 없으면 현재 브랜치를 부모 브랜치로 인식
$ git checkout -b <new_branch_name> <parent_branch_name>

 

이름 변경

$ git branch -m <old_name> <new_name>

 

 

Remote repository branch 명령어

생성

현재 설정된 브랜치에서 push 할 경우 remote origin 에 같은 이름의 브랜치가 자동생성됨.

ex) 현재 로컬 브랜치 이름이 'develop'인 경우

remote 에 master 밖에 없어도 develop branch가 자동생성됨.

$ git push -u origin <branch_name>

 

로컬에 develop branch 를 생성하고 해당 브랜치를 Head가 가리키면 push 할 때 같은 이름의 브랜치로 넣어주는 것이 좋다.

 

삭제

$ git push origin --delete <target_branch_name>

일반적인 fast-forward merge 시 흐름은 다음과 같다.

 

  1. local branch 생성
  2. 작업 & commit & push
  3. 부모 branch로 이동
  4. merge
  5. local branch 삭제
  6. remote branch 삭제 (Optional)
fast-forward merge는 부모 branch 는 변화가 없고 가지 브랜치만 변화가 있을 때 유용하다.
부모에 변화가 있을 경우 (다른 가지가 먼저 merge하여 부모 브랜치에 변화가 생긴 경우도 포함)
새로운 merge request  로 합치는 로그가 필요하다.

위 과정을 아래 명령어를 참조해서 직접 적용해보자.

 


 

Squash and merge

Merge 또는 Pull Request 의 옵션으로 브랜치 병합의 커밋 히스토리를 하나의 커밋 메시지로 묶는다.

하나로 통합되는 메시지는 Merge | Pull Request 제목에 의해 결정된다.

Source Branch 의 커밋 히스토리가 별로 중요하지 않을 때 사용한다.


🔗 Reference

 

How to Delete a Git Branch Both Locally and Remotely

In most cases, it is simple to delete a Git branch. You'll learn how to delete a Git brach locally and remotely in this article. TL;DR version// delete branch locally git branch -d localBranchName // delete branch remotely git push origin --delete remoteBr

www.freecodecamp.org

 

저작자표시 (새창열림)

'기타 > git' 카테고리의 다른 글

[Git] config  (0) 2021.11.11
[Git] Security Vulnerabilities (보안 문제 해결)  (0) 2021.05.12
gitlab Setting (gitlab 시작하기, 설정)  (0) 2020.01.13
error:src refspec master does not match any 해결  (0) 2020.01.09
Git 고급 명령어  (0) 2020.01.09
'기타/git' 카테고리의 다른 글
  • [Git] config
  • [Git] Security Vulnerabilities (보안 문제 해결)
  • gitlab Setting (gitlab 시작하기, 설정)
  • error:src refspec master does not match any 해결
M_Falcon
M_Falcon
  • M_Falcon
    Falcon
    M_Falcon
  • 전체
    오늘
    어제
    • 분류 전체보기 (432)
      • Web (16)
        • Nodejs (14)
        • Javascript (23)
        • FrontEnd (4)
      • DataBase (39)
        • Fundamental (1)
        • Redis (4)
        • PostgreSQL (10)
        • NoSQL (4)
        • MySQL (9)
        • MSSQL (3)
        • Error (4)
      • Algorithm (79)
        • Algorithm (문제풀이) (56)
        • Algorithm (이론) (23)
      • JVM (65)
        • Spring (13)
        • JPA (5)
        • Kotlin (13)
        • Java (24)
        • Error (7)
      • 기타 (70)
        • Kafka (3)
        • Kubernetes (3)
        • Docker (13)
        • git (19)
        • 잡동사니 (27)
      • 재테크 (11)
        • 세무 (4)
        • 투자 (3)
        • 보험 (0)
      • BlockChain (2)
        • BitCoin (0)
      • C (32)
        • C (10)
        • C++ (17)
        • Error (3)
      • Low Level (8)
        • OS (3)
        • 시스템 보안 (5)
      • 네트워크 (3)
      • LINUX (30)
        • Linux (26)
        • Error (4)
      • 저작권과 스마트폰의 이해 (0)
      • 생각 뭉치 (6)
      • 궁금증 (2)
      • Private (4)
        • 이직 경험 (0)
        • 꿈을 찾아서 (1)
      • Android (21)
        • OS (4)
  • 블로그 메뉴

    • 홈
    • WEB
    • 알고리즘
    • DataBase
    • Linux
    • Mobile
    • C
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    algorithm
    kafka
    docker
    프로그래머스
    알고리즘
    PostgreSQL
    database
    Bitcoin
    ubuntu
    JPA
    linux
    java
    백준
    Git
    Kotlin
    Programmers
    android
    javascript
    C++
    Spring
  • hELLO· Designed By정상우.v4.10.3
M_Falcon
[Git] branch
상단으로

티스토리툴바