Git branch (브랜치 생성 방법과 이해)

언제 브랜치를 사용하는 지 예를 들면, 프로젝트 디렉토리에 중요한 실험적인 일이 추가됐다고 치자. 이 실험적인 일은 미래가 불분명하다. 완성 가능성이 낮고, 상품성이 없다던가, 법적인 요건이 충족이 안되는 등 여러가지 불확실한 업무이다. 이러한 불확실한 업무는 언제든지 프로젝트에서 필요없어질 가능성이 있다. 만약 필요없어지면 revert나 reset을 통해 되돌리기를 하면된다.
하지만 그렇게 쉬운 작업이 아니다. 불확실한 작업과 현재 진행중인 안정적인 작업을 동시에 진행하는 경우 굉장히 어려운 작업이 될 것이다.
또 다른 방법은 디렉토리를 통채로 복사해서 작업한다. 그러면 불확실한 작업과 안정적인 작업(현재 진행중인 일)을 따로 진행할 수 있다.
하지만 불확실한 작업이 완료되고 안정적인 작업에 붙여넣기를 해야해서 번거롭다.
그러나 git을 사용하면 브랜치를 이용해서 마치 두개의 프로젝트 폴더를 따로 가지고 각각의 폴더에서 작업하는 것과 같은 효과를 내면서, 동시에 불안정 작업을 끝내고 안정 작업(원본)에 자동화해서 병합해주는 기능을 제공해준다.

글로 백번 설명하는 것보다 실제 예제를 통해 브랜치를 생성하고 사용하는 방법을 알아보자.

How to Create Brunch and Understanding

1. 현재 Working Directory 에 있는 wow.java 파일이다.


2. 소스트리 상단에 Branch 를 클릭한다.


3. New Branch 입력란에 생성할 브랜치의 이름을 입력한다. Commit 부분은 Working copy parent 를 체크하면 현재 Working Directory와 동일한 커밋들이 생성되는 것같다.  Create Branch 를 클릭한다.


4. 왼쪽에서 새로 생성한 브랜치를 더블 클릭하여 체크된 상태로 전환한다. master 브랜치와 같은 인덱스가 적용되어 있는 상태이다.


5. 다시 왼쪽에 master를 더블클릭하여 체크된 상태로 만든다.


6. 소스코드 3~5 라인을 각 줄을 추가할 때마다 커밋한다.


7. 다음과 같이 master branch에 커밋된 후 인덱스가 업데이트된 모습이다.


8. 생성한 testbranch 브랜치로 전환한다.


9. master 브랜치(5~7번)에서 추가했던 "one two tree"가 적용되어 있지않다. 여기서 각 브랜치의 변경사항들은 서로 영향을 주지 않는다는 것을 알 수 있다. 또한 왼쪽 브랜치를 변경할 때 Working Directory의 파일이 각 브랜치의 버전에 맞게 자동으로 변경된다.


10. 소스코드에 "test~"를 추가한다.


11. 소스트리에 Uncommitted changes가 감지된다. Graph가 두 갈래로 나뉜 모습이다.


12. 변경사항을 stage한 후 커밋한다.


13. Graph가 두 갈래로 나뉘면서 인덱스가 업데이트 되었다. 브랜치 생성 후에 master와 testbranch는 서로 별개로 프로젝트를 진행하듯이 사용할 수 있다.











댓글

이 블로그의 인기 게시물

AWS RDS DB 인스턴스에 연결하기 (Oracle Database Instance)

tomcat server.xml ( 톰캣 서버 설정 )

Git resolving merge conflicts as Mark resolved (mark resolved 옵션으로 해결)