본문 바로가기

개발자 이야기/Git, GitHub

터미널로 git branch를 생성/이동/삭제 해보기

어제 밤에 git 저장소를 git init 명령어를 통해 기본적인 add, commit을 해봤는데 바로 이어지는 장에서는 branch에 관한 설명이 나온다. 어제에 이어서 계속해서 git init으로 git 저장소를 계속해서 생성했다가 다시 지웠다가 책에 나온 내용을 손에 익도록 여러번 실습했다. 그리고 이제 branch에 대해서 공부한다.


우선 branch를 생성해야 하니 branch가 뭔지는 알아야겠지? branch라 함은, 문자 자체 그대로의 뜻을 보면 네이버 사전에서는 '나뭇가지'라는 뜻을 가지고 있다고 나온다. 내가 알고 있던 뜻이랑 똑같다. 책을 읽어보고 실습하면서, 또 인터넷을 뒤적뒤적거리다 보니 branch는 나뭇가지처럼 내가 하고 있는 작업을 분리시키는 것을 말한다. 나는 이 한 branch branch들을 각각의 작업공간으로 이해하고 넘어가도록 했다. 그럼 우선 branch를 만들어봐야지! 우선 git branch 명령어를 입력하면 현재 branch들의 목록을 확인할 수 있다. 다만 조심해야할 것이 있다.




현재 git 저장소를 만들어 놓은 곳은 prac 폴더이다. 하지만 mkdir prac2 를 입력하여 prac2 폴더를 만든 뒤 prac2 폴더에서 git branch 명령어를 입력해보았다. 사진처럼 에러가 뜬다. git 저장소가 만들어있지 않기 때문이다. git branch 명령어를 사용하기 위해선 git init을 통해 git 저장소를 만든 뒤 그 폴더에서 실행시켜야 한다. 그럼 git 저장소를 만들어 놓은 prac 폴더에서 다시한번 git branch 명령어를 실행시켜본다.


그럼 아마 사진처럼 master라는 branch가 나오고 앞에 '*' 표시가 되어 있을 것이다. 다른 branch를 만든 적이 없다면 말이다. 기본적으로 master branch가 존재한다. 이 master branch는 후에 다른 branch들이 병합되는 기준 branch가 된다. 그리고 앞에 있는 '*' 표시는 현재 작업중인 branch를 나타낸다. 그럼 이번에는 새로운 branch를 만들어보기로 한다. 아, 그 전에 왜 branch를 생성할까? 라는게 중요할 것 같다. 아마 이 branch가 버전 관리(여기서는 git)를 사용하는 이유가 될 것이다. master branch라는 공통적인 버전은 일단 두고, branch를 새로 만들어 그 쪽에서 작업을 한 뒤, 만약에 성과가 있다면, master branch에 병합을 하면 되고 혹시나 실패를 했거나 다시 갈아 엎을 일이 생길 때는 그냥 작업중인 branch를 지우면 되는 것이다. SVN에서 revert 시키는 일과 비슷한 역할을 한다(맞나?). 우선 branch를 새로 만들어야 하는데 아까 branch 목록을 확인했던 명령어는 git branch 였는데, 여기에 뒤에 branch명을 붙여 git branch "branch명" 을 입력하면 원하는 이름의 branch가 생성된다. 




나는 test라는 이름의 branch를 생성했다. 그리고 다시 git branch를 입력하여 현재 branch들의 목록을 확인한다. 내가 방금 만든 test branch도 나온다. 하지만 아직 작업중인  branch는 master branch이기 때문에, 아직 '*' 모양은 master branch에 있다. 그럼 이제 작업 branch를 방금 만든 test branch로 옮겨보기로 한다. git checkout "branch명" 을 입력하면 해당 branch가 작업 branch로 변경된다. 이런 과정이 귀찮다면 branch를 만드는 동시에 해당 branch로 작업 branch를 변경하는 명령어는 git checkout -b "branch명" 이다. 나는 아직까진 git 명령어들이 손에 익지 않으니 차근차근 한 과정씩 하려고 한다. branch를 변경해도 각각의 branch는 독립적이기 때문에 내가 test branch에서 작업을 한다고 해서 master branch에 영향을 주는 것은 아니다. 



branch를 변경한뒤 git branch를 통해 목록을 살펴보니  '*' 모양이 방금 만든 test branch로 이동하였다. 그럼 원본인 master branch는 그대로 둔 상태에서 test branch에서 작업하는 것이다. 작업이나 merge는 좀 더 연습을 한 다음 손에 익으면 블로그에 정리해볼 생각이다. 그리고 branch를 지우고 싶을 땐 git branch "branch명" -d를 입력하면 된다.




다만 주의해야할 점은 현재 작업중인 branch는 삭제할 수 없다. 저렇게 메시지가 뜨게 된다. 그럴 땐 master branch로 이동해서 명령어를 실행시키면 깔끔하게 branch를 지울 수 있다.