Git Branch(Week 7-1)

G·2022년 10월 10일
0

2-2 OpenSource

목록 보기
8/12

Branch

Git의 Branch란 version 관리를 효율적으로 하기 위함이다. 기능별로 코드를 모듈화 했을 때 branch마다 기능을 구현하고, 이 코드들을 하나의 branch에 합병(Merge)하는 기능도 제공한다.

Contents

  • What is Branch in Git?
  • Creating Branch
  • Checking Branch Information
  • Merging Branches
  • Managing Branches

What is Branch

Branch란 Git뿐만아니라 거의 모든 version control system에 존재하는 기능이다.
Branch란 사전적으로 나뭇가지를 의미하는데, 프로그램을 개발할 때에도 여러갈래로 퍼지는 변경사항의 형태이다.

Feature 1, Main, Feature 2가 존재하는데 각각 기능마다 모듈화를 하여 branch에서 작업을 한다면 각각 branch마다 개별적으로 수정, 개발을 하고 이후에 Main branch에 합병할 수도 있다.

$ git log 명령어를 통해서 commit 정보를 볼 수 있는데, 여기서 master branch는 가장 최신의 commit을 가리킨다. 그래서 branch는 commit을 가리키는 pointer라고 봐도 좋다.

2 functions of branch

  • Branch
    master branch에서 새로운 branch를 생성한다면 독립적으로 개발이 가능하다. master branch에서 두 개의 branches를 생성한다면 각각의 branch는 개별적으로 개발을 할 수 있다.
    각각의 branch는 서로 영향을 주지 않는다.

    각각의 purple, green branch가 생성되었다.
  • Merge
    각각의 branch에서 개별적 작업이 끝났다면 master branch에 다시 합병해야한다. 이것을 Merge라고 한다.

    master branch가 개별 branch들 이후 나타난다면 Merge가 이루어진 것이다.

Using branch

branch를 사용하기 이전에 하나의 파일을 생성, 두 번 수정하여 세 개의 commit을 만들어 놓자

위 사진을 보면 세 개의 commit이 생성되었다.

git branch

$ git branch [branchName]
$ git branch

위의 두 명령어를 사용하여 branch를 생성하고 branch의 정보를 확인하자.
master branch와 safecal branch가 생성되었다. *는 현재 작업 중인 branch를 뜻 한다.

git log를 명령어로 현재 HEAD->master, safecal을 확인할 수 있는데
이는 현재 두 branches가 git repo에 존재한다는 뜻이고, 현재 사용 중인 branch는 master라는 것이다.

하나의 branch를 생성해보자. 그 이후 새로운 커밋을 해준다. git log의 상태는 어느정도 짐작이 가능할 것이다.
new branch: morefourcal


$ git log --oneline 옵션을 사용하여 log를 확인한다면 현재 사용 중인 master branch는 새로운 commit을 가리키고 있고 기존에 만들어진 두 개의 branches는 아래에 존재하는 것을 확인할 수 있다. branch는 생성된 시점에 master branch가 가리키는 commit을 가리킨다.

git checkout

$ git checkout safecal 명령어를 사용하여 현재 사용 중인 branch를 바꾼다. HEAD는 safecal branch를 가리키고 있다.

$ git log --oneline

master branch에 있던 내용은 사라지고 safecal branch가 가리키고 있던 branch의 commit까지 모두 복사한다.
safecal의 가장 최신 commit으로 돌아간 것이다.
그렇다면 master branch에서 commit한 내용들은 없어지기 때문에 서로 영향을 주지 않는다.

git add .(with how branches work)

이제 safecal branch에서 작업을 해보자.
safecal branch에서 cal.py를 수정하고 print_safecal.py를 생성한다.
$ git add . 명령어를 사용하여 두 파일을 한 번에 staging을 한다.
이후 git commit -m "Add a class SafeCal" 명령어를 이용하여 두 파일을 commit한다.


이후의 git log --oneline은 이렇다.
safecal branch에만 존재하는 commit은 Add a class SafeCal이고 가장 최신 commit이다.
morefourcal brach는 생성 시점인 곳에 머물러 있는 것을 확인할 수 있다.
이제 대강 branch가 어떻게 작동하는지 이해했다.

git log --oneline --branches


각각의 branches를 확인할 수 있다. 서로 영향을 끼치지 않은 모습이다.

git log --oneline --branches --graph


시각적으로 branch의 관계를 확인할 수 있는 명령어이다.
|와/가 나타난다.

Add a class SafeCal
~~
|
|/
Add a sub method in FourCal
이 부분은 위쪽 commit의 부모 commit이 아래의 commit이란 뜻이다.
이는 부모 commit 이후에 commit이 되었다는 뜻이다.

Add a mul method in Fourcal
~~
|
|/
Add a sub method in FourCal
이 부분은 위쪽 commit의 부모 commit이 아래 commit이란 뜻이다.
이는 부모 commit 이후에 commit이 되었다는 뜻이다.

둘 다 똑같은 의미이다.
추가로, master branch의 commit 이후 safecal branch가 만들어졌단 것도 확인할 수 있다.

git log [branch 1]..[branch 2]

branch 2에는 있지만 branch 1에는 존재하지 않는 commit을 보여주는 명령어이다.

Add a class SafeCal commit은 safecal에만 존재한다. branch가 너무 많아져 확인하기 힘들 때 사용하면 좋다.

profile
열심히 안 사는 사람

0개의 댓글