소스트리(Source Tree)에서 브랜치(Branch) 따기


이번 포스팅에서는 소스트리(Source Tree)에서 브랜치(Branch)를 따는 방법에 대해서 알아보고자 한다. 그 전에 브랜치가 무엇인지에 대해서 알아보자.

  • 브랜치(Branch)란?



    : '(나무의) 가지'라는 뜻으로 독립적으로 어떤 작업을 진행하기 위한 개념이다. 필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있다. 소프트웨어를 개발할 때 개발자들은 보통 동일한 소스코드를 함께 공유하고 다루게 된다. 동일한 소스코드 위에서 어떤 개발자는 버그를 수정하기도 하고 또 다른 개발자는 새로운 기능을 만든다. 이와 같이 여러 사람이 동일한 소스코드를 기반으로 서로 다른 작업을 할 때에는 각각 서로 다른 버전의 코드가 만들어 질 수 밖에 없기 때문에 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능이 필요한데 그 기능이 바로 ‘브랜치(Branch)’ 이다. 각자의 작업이 다 끝나면 merge(병합)을 통해서 기존 코드에 작업한 기능들을 더해주면 된다.

좀 더 쉬운 이해를 위해 예시를 보면서 이해해보자.

나는 회사의 출/퇴근을 기록하는 챗봇을 만들었다. 하지만 외국으로 출장을 가는 경우는 시차가 달라지기 때문에 외국에서 주간에 일했음에도 불구하고 한국에서는 야간에 일한 것으로 처리가 되는 수가 있어 이를 체크하기 위해 출장 여부를 기록해주는 기능을 만들고 싶다. 근데 부장님이 허락할지 모르겠다. 일단 실험적으로 (따로) 만들어봐야겠다.

  • 기존 코드는 출/퇴근을 기록하는 챗봇 기능들이고, 새로 만들고 싶은(추가하고 싶은) 기능을 브랜치를 따서 만들겠다는 의미이다.

그럼 이제 직접 브랜치를 따서 작업을 해보자.

현재는 master 브랜치만 있는 상황이다. 처음에 따로 만들지 않아도 master 브랜치는 default로 있다. 위에 빨간색으로 브랜치라고 되어있는 부분을 클릭한다.

브랜치 이름을 지정해주고 ‘브랜치생성’을 눌러주면

아까와는 달리 밑에 브랜치가 하나 생성된 것을 확인할 수 있다. 현재 O 표시가 방금 만든 브랜치에 있으므로 현재 상태는 브랜치에 있는 상태이다. master 브랜치로 가고 싶으면 위에 master를 더블클릭해주면 된다.

지금이 master 브랜치로 이동된 상태이다. 하지만 무슨 차이가 있는지 모를 것이다. 왜냐면 현재는 master 브랜치와 ‘백준9012번코딩’ 브랜치의 해당 파일에 둘 다 아무것도 없는 상태이기 때문이다(각 오른쪽 빨간색 부분). 차이점을 확인하기 위해 브랜치에서 작업을 해보자.

먼저 해당 파일에 작업을 한다.

그 다음 ‘백준9012번코딩’ 브랜치로 이동 후 위에 커밋 버튼을 눌러준다.

커밋 버튼을 누르면 이런 화면이 나오는데

오른쪽을 보면 새로 추가한 내용들이 보인다. 이제 커밋을 해주자. 방법은 해당 파일 선택 후 스테이지에 올리기를 선택해주면 된다. 어차피 파일이 하나이므로 둘 중 아무거나 해도 상관없지만 파일이 여러 개인 경우는 상황에 따라서 선택해주면 된다. 필자는 ‘선택 내용 스테이지에 올리기’를 눌렀다. 그렇게 되면

파일의 위치가 이동되었다. 그 다음 밑에 이름 설정 후 커밋 버튼을 눌러주면 된다.

그러면 아까와 다르게 밑을 보면 처음과 다르게 내용들이 추가되어 있다. master 브랜치는 어떤지 보자.

master 브랜치로 이동해보면 아무것도 없다. 또한 이를 작업하고 있는 에디터에서도 확인할 수 있다(필자의 에디터는 Pycharm).

아까 작업했던 Pycharm 화면이 아닌 빈 Pycharm 화면이 나온다. 이는 현재 master 브랜치이기 때문이다. 그럼 ‘백준9012번코딩’ 브랜치는 어떨까? 직접 확인해보자.

master 브랜치에서 백준9012번코딩 브랜치로 이동하였다. 이제 에디터로 가보자.

다시 빈 화면에서 해당 작업했던 코드들이 나타난다. 아까 백준9012번코딩 브랜치에서 커밋했기 때문에 커밋했던 코드들이 나타나게 되는 것이다. 다음 포스팅에서는 각 만든 브랜치를 master 브랜치에 병합시켜보자.




참고 블로그 :

  • https://opentutorials.org/module/151/2099
  • https://developer88.tistory.com/153#recentEntries

이전글: 소스트리(Source Tree)를 저장소(repository)와 연결하기 다음글: 리눅스에서 wget으로 파일(디렉토리) 다운받기