Git branch

조 은길·2021년 2월 22일
1
post-thumbnail

이번 시간에는, git의 가장 강력한 능력 중에 하나인 git branch에 대해서 알아보자!! 두둥!!

- git branch

우리가 가진 저장소 ( repository )는 master이다. 그리고, 회사 입장에서 master는 고객들에게 서비스 되는 최종본을 master라고 부른다.

중앙 노란색 부분은 master이고, 각 분야의 개발자들이 양 옆으로 branch (가지)를 만들어서 새로운 기술로 적용해보고, 최신판으로 개발해본다!!
그리고, branch가 잘 완성이 되면, 다시 master에 합쳐주는데 이것을 merge라고 부른다. 이 부분은 다음 편에서 더 자세히 설명하겠다.

branch의 가장 큰 특징은 branch로 이것저것하다가 망하면, 그냥 없애버리면 된다!!

case 1) 개발하다 실패했어?? branch 삭제!! 끝!!

case 2) 오!! 잘 됐네!! master로 merge!! ㄱㄱ!!

즉, branch를 따로 빼서 신기능을 개발하고, 성공하면, master로 합쳐주고!! 기본적으로 이런 싸이클이다!!

이제 본격적으로 git branch를 써봅시다!!

terminal에 git branch를 타입하면, 현재 존재하는 branch들의 리스트들을 확인할 수 있다.

지금은 추가적인 branch를 만들어주지 않았기 때문에, master branch ( 그림 속 중앙에 뻗어있는 가지 ) 하나 뿐이다.

그런데 앞으로 신기능을 개발해보고 싶다!! 이러면 master가 손상되지 않게 언제든 "가지치기"를 할 수있는 branch를 하나 더 만들어준다.

보통 실무에서는 branch 이름으로 "development"를 많이 쓴다고 한다.

git branch <원하는 branch 이름>
=> 새로운 branch를 생성하는 명령어

그리고 다시 branch를 검색해보면, 우리가 만든 브랜치인 development가 뜬다.

이제 branch를 만들었으니, 이것을 쓰려면 여기가 있는 장소로 이동해야 한다. 아직까지는 아무런 이동 명령을 해주지 않았기 때문에 우리는 master branch 속에 있다.

development로 가보자!! ㄱㄱㄱ

git checkout <branch 이름>
=> 어떤 branch로 이동하고 싶을 때, 쓰는 명령어

이제 우리는 development branch 속으로 들어왔다.

제대로 들어왔는지 알기 위해서, git branch로 확인해보자!

앞에 * 표가 붙어있는 부분이 우리가 현재 있는 곳이다. 즉, 잘 들어왔다.

이제 이 안에서 code2.txt 내의 파일을 수정해서 commit 해보자

이런 식으로

그 뒤에 commit을 해보면,

현재 상황을 그림으로 표현해보면, 다음과 같다.

지금은 master 쪽에서 새로운 commit이 없기 때문에, master와 developement의 구분이 없어 보인다. 언뜻 보면, master의 최종본이 development처럼 보이는데... git은 이 둘을 명백하게 구분하고 있으니 걱정하지 않아도 된다.

만약에,
누군가가

이런 식으로 마스터로 돌아와서 새로운 파일을 commit 해주면 master branch도 다른 방향으로 자라난다.

자!!! 이제 branch를 지우는 방법에 대해서 알아보자!!

일단 어떤 branch를 지우던, 반!드!시!!! 먼저 master branch로 이동해야 된다.

그리고

git branch -D <지우고 싶은 branch 이름>
=> * 소문자 -d 가 아니라 대문자 -D 이다.

=> branch가 성공적으로 지워졌다.

좀 더 확실하게, 지워졌는지 확인해보고 싶다면,
"git branch"를 타입해서, 해당 branch가 남아있는지 확인해봐도 좋다!!

마지막으로, branch에 관한 TMI 첨부해보겠다.
[ 이 부분은 그냥 안 보고 넘어가도 무방하다 ]

- More about git branch [optional]

  1. branch의 갯수는 몇 개가 되도 상관이 없다.

  2. Branch의 가장 큰 문제는 완성 후에, master branch로 흡수 시켜주는 과정에서 충돌이 자주 생긴다.

예를 들어,

branch A 에서 code1.txt를
a. 조은길
b. 조은길 바보
c. 메롱이다!!

branch B 에서 code1.txt를
a. 조은길 좀 짱인듯!
b. 조은길 바보
c. 메롱이다!!

이렇게 같은 파일의 같은 a 줄을 다른 방식으로 바꾸는 경우가 자주 발생하는데, 이 두 branch가 master branch로 흡수 되는 순간, 충돌( conflict ) 이 발생한다.

이때, git은 그 어떠한 행동도 취하지 않는다. 충돌이 났다는 것만 알려주고, 수정하는 것은 어디까지나 사용자들의 몫이다.

  1. branch를 만들고, 곧바로 해당 branch로 이동하는 명령어

git checkout -b <branch 이름>
=> 새 branch 생성이후, 자동으로 그 branch로 이동까지 한다.

코드 스테이츠에서는 이 방법을 알려주지만, 개인적으로는 별로 사용을 권장하고 싶지 않다.
한 번에 여러가지 일을 하는 명령어는 가끔 자신이 무엇을 했는지 놓치는 상황을 만들어 준다.
본인이 이 명령어가 너무 익숙해져있다면 몰라도... 왠만하면 git 초보 일때에는 권장하지 않는다.

  1. branch 작업을 시작한다면, terminal을 열자마자
    git branch와 git pull origin master를 치는 습관을 들이자!!

git branch
=> 가끔 내가 어디있는지 모르고, 딴 데에서 작업하는 경우가 종종 있다.

git pull origin master
=> 전 날에 누가 무슨 파일을 commit했는지 모르기 때문에, 매일매일 최신 commit 상태 (혹은 갯수)로 업데이트 해줘야 된다.
( 안 그러면, 나중에 [ 충돌 + commit ] 이 꼬이는 대참사가 발생할 수도 있다. )

여기까지 git branch 끝!!!

branch는 정말 중요한 개념 중 하나이니 꼭꼭 잘 알아두자!!


자료 출처 및 참고 자료

이번 블로그는 Stackoverflow 자료와 ZeroCho 블로그의 일부를 바탕으로 작성했으며, 그 어떠한 상업적 용도도 없음을 밝힌다.

https://www.zerocho.com/category/JavaScript

https://www.youtube.com/watch?v=PmWPdYkAMg4

https://www.youtube.com/watch?v=I4latDqXo5M

https://www.geeksforgeeks.org/ultimate-guide-git-github/

profile
좋은 길로만 가는 "조은길"입니다😁

0개의 댓글