티스토리 뷰
오늘은 git 브랜치에 대해 배워볼까 합니다.
branch를 만든다는 것은 작업을 분기하겠다는 의미와 같습니다.
즉, 오늘 브랜치에 대해 배우면 앞으로는 작업을 분기시켜 관리 할 수 있는 능력을 얻게 되는 것이죠 :)
그럼 브랜치는 어떤 상황에서 만들게 될까요?
여러가지 경우가 있겠지만, 크게 두가지 경우 입니다.
- 원래 소스코드는 변경하지 않으면서 기존 소스코드에 다른 기능을 추가 하고자 할 때!
- 메인 작업과 테스트작업을 분기해서 진행하고자 할 때!
그럼 시작해 봅시다!
git branch 라고 입력을 해보면 현재 branch 리스트가 나옵니다.
저희는 아직 새로운 브랜치를 생성한적이 없기 때문에, 아래와 같이 나올껍니다.
master옆 에있는 *의 의미는 현재 어느 브랜치에 들어와 있는지를 나타냅니다.
그럼 git branch '이름' 명령어를 통해 새로운 브랜치를 하나 만들어 봅시다!
저는 이름을 feature1이라 짓겠습니다.
git branch feature1
다시 git branch 명령어를 쳐보면 master 위에 feature1 브랜치가 생긴것을 확인 할 수 있을 겁니다!
그럼 현재 브랜치에서 다른 브랜치로 이동하는 방법을 알아볼까요?
master 브랜치에서 feature1 브랜치로 이동하는 방법은 간단합니다.
git checkout '브랜치 이름' 을 입력하면 됩니다. 의미는 현재 브랜치에서 체크아웃 하고 브랜치 이름에 적는 브랜치로 옮겨가겠다! 라고 이해하면 될 것 같습니다.
저희 같은경우 git checkout 'feature1' 을 하면 master브랜치에서 나와서 feature1 브랜치로 이동하게 되는거죠. 그럼 아래와 같이 *이 feature1으로 이동해 있는 것을 볼 수 있습니다. 현재 feature1 브랜치에 있다는 말이죠.
feature1 브랜치는 master의 마지막 커밋에서 분기되어 나온 브랜치이기 때문에 같은 커밋을 가리킬 텐데요.
차이점을 만들기 위해, vim project1.txt 를 통해 내용을 변경하거나 file1.txt 같은 새로운 파일을 만든 후 add 와 commit 작업을 통해 새로운 커밋을 만들어 본 후 git log를 입력해보면 feature1에만 커밋이 추가 된것을 알 수 있습니다. (master 브랜치로 이동해서 git log를 해보면 더 확실하게 알 수 있죠. 또 파일도 추가하고 내용도 변경하고 커밋도 하면서 실제로 폴더에 들어가서 파일이 바뀌나 확인해 보는 것도 재미?있습니다.)
여기서 HEAD -> '브랜치명' 은 현재 어느 브랜치에 있는지 알려줍니다. 즉, 현재 브랜치를 가리키는 포인터라 할 수 있죠. 좀 더 익숙해지기 위해 master 브랜치와 feature1 브랜치를 왔다 갔다 하면서 커밋도 해보고 하면, 분기 된상태에서 서로의 분기상태 차이를 확연하게 볼 수 있습니다.
사실 SourceTree 같은 GUI툴로 보면 훨씬 깔끔하고 유려하게 볼 수 있는데, SourceTree는 나중에 다룰 예정이기 때문에! 우선 터미널이나 커맨드라인으로 확인해 봅시다!
git log --branches --decorate 를 입력해보면, commit 내역을 확인해 볼 수 있고 (내역 확인 후 나올때는 q), git log --branches --decorate --graph 를 입력하시면 그래프로 어느 커밋부터 분기가 되었는지 확인 해 볼 수 있습니다.
저 같은경우 ffb76d60c~ 커밋을 같은 조상으로 하며, 이곳에서 분기 된것을 알 수 있습니다.
또 git log master..feature1 와 git log feature1..master 라는 명령어를 통해 각 브랜치에서의 차이점을 확인해 볼수도 있습니다. (전자는 master 브랜치에는 없고 feature1 브랜치에는 있는 것, 후자는 feature1 브랜치에는 없고 master 브랜치에는 있는 것)
git log -p master..feature1 처럼 -p를 넣어서 명령어를 입력하면, 더 자세히 확인해 볼 수 있습니다.
이 외에 git diff master..feature1 같은 명렁어도 확인해 보시기 바랍니다!
다음 편에서는 브랜치 머지(merge)에 대한 내용으로 찾아 오겠습니다!
'Git 정리' 카테고리의 다른 글
Git 정리(5) - stash (0) | 2020.02.18 |
---|---|
Git 정리(4) - Merge (0) | 2020.02.18 |
Git 원리소개(1) (0) | 2020.02.08 |
Git 정리(2) - git add & commit (0) | 2020.02.07 |
Git 정리(1) - git init에 대해 알아보자! (0) | 2020.02.03 |