본문 바로가기
Programming/Git

[Git] 소스트리 / 이클립스에서 브랜치 만들기(branch)

by 배고프당 2019. 4. 23.
728x90

1.브랜치

 
프로젝트를 진행하다가 새로운 기능을 추가해야 할 일이 생겼다면?
 
여기서 보통 두가지로 나뉘어진다.
 
  1. 기존 소스에서 새로운 기능을 만든다.
  2. 기존 소스를 백업 받아놓고 그 파일을 복사해서 새로운 기능을 추가한다.
 
1번 방법으로 해도 상관이 없지만 해당 기능이 소스에 반영 되지 않을 수도 있고, 프로젝트 진행 중에 심각한 버그가 발생해서 그때 당시의 소스를 수정해야 되는 상황에서 만줄이 넘는 새로운 코드를 고쳤다면 그 코드들을 도려내는 작업을 할때 어려움이 많을 수 있다.
(물론 git에서 revert나 reset 같은 기능이 있긴 하지만 이건 나중 포스팅에...)
 
그렇다면 2번 방법을 생각해 볼 수 있을텐데 파일 관리하는 포인트가 두개가 생기게 되고 새로 만든 코드를 원본 코드에 반영할 때 어려움이 많다.. 이것도 좋은 방법은 아니다.
 
그래서 Git에서는 하나의 소스트리 안에서 기존에 하던 작업과 새로운 기능 및 어떠한 시점으로 프로젝트를 분리하여 관리하고 싶을때 브랜치라는 기능을 제공한다(branch)
 
새로운 기능들을 브랜치를 만들어서 작업을 그곳에서 하고, 만약에 해당 브랜치가 완료되었을 때 변경된 내용을 매우 간편하게 오리지널 소스로 옮길 수 있다.
 
물론 이 과정에서 원본 소스와 충돌이 일어날 수 있고 여러 문제가 일어날 수도 있지만 Git에서 이런 것도 제공을 잘 해준다. 
(충돌과 관련된 내용은 이번 포스팅에서 다루진 않는다)
 

2.브랜치 만들기
 
Branches부분에 master라고 되어있는 부분은 현재 브랜치(branch)이다.
 
 
 
 
 
소스트리 상단 메뉴바에 Branch 버튼을 클릭하고 New Branch에서 새로 만들 브랜치 이름을 입력한다 (공백을 넣으면 에러가 나므로 나는 공백대신 _ 넣었다)
 
이렇게 create branch를 하게 되면 왼쪽 메뉴에 Branches 부분에 master만 있던게 새로 입력한 브랜치까지 같이 생성되서 나온다.
 
 
 
 
 
현재 저장소에는 두개의 브랜치가 있다.
 
1.master
  • 저장소를 만들 때 기본적으로 만들어지는 브랜치
  • 이름을 바꿀수도 있지만 기본적으로 생성되면 디폴트는 master이다.
2.방금 생성한 "새로운_기능추가1"이라는 브랜치
 
지금 현재 코드는 똑같은 상태이다. (똑같은 상태에서 브랜치를 만들었기 때문에)
 
이제 master에서는 일상적인 기본 프로젝트 업무를 하고 
새로운_기능추가1이라는 곳에서는 프로젝트에서 아직 반영될 지 모르는 새로운 기능을 테스트하고 완료가 되면 반영하는 목적의 소스들을 여기에 추가할 것이다.
 
소스트리에서 master 브랜치를 더블클릭하고 test.html에 h1태그를 추가하고 gitignore파일도 추가해서 커밋 & 푸쉬를 완료했다.
 
하단 그림에서 보는것처럼 
  • 새로 만든 파일은 ? 의 초록색 버튼
  • 기존에 있는 파일에서 수정/추가된 파일은 노란색 ...버튼으로 표시가 된다.
 
 
 
자 이상태에서 다시 브랜치를 "새로운_기능추가1"로 변경을 하고 test.html에 head태그를 추가한다.
 

지금 공통적인 작업은 각각 브랜치에서 gitignore라는 파일을 추가했고
다른 작업은 test.html이라는 파일을 수정했지만
 
master 브랜치 : h1태그 추가
기능추가 브랜치 : head 태그에 title 태그 추가
 
위 같은 작업을 실시했다.
이제 소스트리에서 왼쪽 메뉴에 History 메뉴를 보면 다음과 같은 그래프를 볼 수 있다.
 
 
정리를 해보면 
 
  1. test.html 파일 생성 후 커밋을 처음 함과 동시에 해당 시점에 기능 추가 브랜치를 만들었다.
  2. master 브랜치로 선택을 해서 gitignore파일과 test.html파일에 h1태그를 추가하고 커밋 앤 푸쉬를 했다.
  3. 기능추가 브랜치로 선택을 해서 gitignore파일과 test.html파일에 head태그 와 title 태그를 추가했다.
위와 같은 그래프의 형태이다.
 
이클립스와 연동을 해놓았다면 소스트리에서 브랜치를 더블클릭하면 해당 이클립스에서 자동으로 변환된 브랜치로 바뀌게 된다.
 
브랜치 변경하면 자동으로 이클립스도 바뀐다
 
 
브랜치 변경하면 자동으로 이클립스도 바뀐다
 
 
 
 
하지만 약간의 시간차가 있어서 불편한 분들은 이클립스에서 바로 브랜치를 변경해도 된다.
 
프로젝트 우클릭 - Team - Switch To - 변경할 브랜치 선택
 
이클립스 switch branch

 

728x90

댓글