-
협업도구와 친해지기 [ STS 와 Git + 소스트리 활용 ]개발 2020. 1. 28. 18:26
1. Git에 Repository 만들기
1. github.com 에 접속
2. 좌측 Repositories에서 New 버튼 클릭해서 Create a new repository 들어가기
3. Repository name 정해준 후 생성, discription은 선택사항, Public으로 생성한다 (private은 유료)
4. URL 생성된 표시 뜨면 레파지토리 생성 완료!
2. Git Repository 원격저장소를 SourceTree와 연결하기
1. 소스트리 상단에 새로운 탭 생성후 Clone 클릭
2. 소스경로/URL -> Git에서 생성된 URL 복사
3. 목적지 경로 -> 진행할 프로젝트 WorkSpace 경로에 폴더 생성후 삽입한다 (편리하게 import 위해)
4. 클론
3. SourceTree와 Git에 첫 프로젝트 세팅하기 및 STS 연동
1. SourceTree로 클론할때 지정한 경로에 프로젝트를 삽입한다
(여기서 gitignore.txt를 삽입해주면 커밋하지 않고 무시할 목록을 설정가능)
2. SourceTree들어가서 모든 파일 스테이지에 올리기 -> 커밋 -> 커밋메세지 ( ex) 첫 커밋) 입력 후 커밋
3. Push 해서 Git 원격저장소에 업로드 하기
4. Github에서 프로젝트 커밋 확인하기
5. STS의 PackageExplorer에서 마우스우측 누르고 import 누르고
General -> Projects form Folder or Archive 누르고 경로 임포트하기
5. SourceTree에서 브랜치 사용
SourceTree에서 Clone을 받았다면
이제 SourceTree에서 브랜치(각 기능에 대한 가지라고 보면 된다)를 생성해서
각 브랜치에서 수정을 하고 수정할 수 있다. 여기서 GitFlow를 사용 할 예정인데,
쉽게 설명하자면
- master : 제품으로 출시될 수 있는 브랜치
- develop : 다음 출시 버전을 개발하는 브랜치
- feature : 기능을 개발하는 브랜치
- release : 이번 출시 버전을 준비하는 브랜치
- hotfix : 출시 버전에서 발생한 버그를 수정 하는 브랜치
develop에 각 feature(기능)을
차곡차곡 commit(로컬저장소에 업로드) 한 후
push(원격저장소 github에 업로드) 한다.
- 깃플로우에 대한 자세한 내용 출처
- http://woowabros.github.io/experience/2017/10/30/baemin-mobile-git-branch-strategy.html
실제로 사용해 보자. (가장 빈번하게 사용할 develop-feature 사용법만)
1. 우측 위쪽에 '깃 플로우' 버튼을 누르고 Default 값을 사용해서
Git Flow 저장소 초기화를 해준다. (아무것도 건드리지 말고 확인을 누른다)
2. 왼쪽 브랜치에 develop 브랜치가 생겼다면 성공!
3. 깃 플로우 버튼을 한번 더 눌러서 새 기능 시작 버튼을 눌러준다.
4. 기능명을 입력한다. (ex> 스프링설정, 로그인구현, 재고관리구현, 채팅방구현 등등...)
5. 이런식으로 feature 아래의 기능이 생겼다면 성공!
=> 이제 feature 아래의 기능을 클릭하고 그 브랜치 내에서 작업하면 된다.
6. 이제 여기서 작업을 완료하고 커밋해준 후 다시 깃 플로우 버튼을 누르면 기능마무리를 한다.
7. 기능 마무리 버튼을 누르면 친절하게도 fiture브랜치의 기능브랜치가 develop으로 병합이 된다고 알려준다.
이후에 develop을 클릭하고 feature가 devlep으로 병합된 가지 모양을 확인한다.
8. PUSH를 눌러서 develop을 Push 해주면 원격저장소(Github)에 업로드된다.
[ 최종: 소스트리/git 기본 사용 ]
1. develop 원격 패치/풀 해서 가져오기
- 기능 시작 전에 꼭 원격 origin/develop 에서 develop으로 동기화시키고 브랜치 따기!
그래야 새로운 기능을 구현하기 전에 원격 저장소에 있는 최신버전부터 내가 수정할 수 있다.
(origin/develop(원격) => develop(로컬))
2. (깃플로우기능시작 or 수동으로) feature/기능명 브랜치 따서 그곳에서 작업
3. 커밋버튼 눌러서 수정한 파일 스테이지에 올리기 및 커밋 ★ 수정 불필요한 파일들 폐기 ★
- 커밋내용에 "이름/기능명" 정도의 내용 작성 후 커밋.
4. feature/기능명 브랜치 => 깃플로우기능마무리로 develop에 병합 or 수동으로 develop에 병합
(개인적으로, develop 삭제하고 다시 기능을 파서 시작하는것을 추천한다.
그러나 그 브랜치에서 이어서 굳이 작업할 경우에는 feature/기능명 브랜치를 클릭한 상태에서
병합된 develop을 feature/기능명으로 다시 merge해서 최신화 해준다.)
5. develop을 push해 origin/develop(원격저장소)으로 업로드
* 주의사항1 : commit할 파일이 남아있으면 브랜치간 전환이 안된다.
commit을 해준 후 브랜치간 전환 및 병합을 해준다.
* 주의사항2 : develop을 Push하고자 할때 원격저장소가 도중에 바뀌어서
최신화가 필요하면 패치/Pull해서 원격 origin/develop에 수정된 파일을 로컬 develop로
땡겨온 후 충돌 수정을 해준 후 원격으로 Push해준다.
[ Fetch Pull의 차이가 무엇인가??? ]
- Fetch : 중앙 저장소의 소스를 로컬 저장소로 가져온다!
그러나 현재 작업중인 소스들을 변경하는 Merge 작업을 하지는 않는다
- Pull : 중앙 저장소의 소스를 로컬 저장소로 가져온다! 또한 현재 작업중인 소스들의 Merge 작업까지 통합하여 수행한다
우리가 사용하는 패치의 기본 컨셉은
어느곳에서 눌러도 전체 저장소에서 검사해서 풀 할수 있는 소스를 찾아주는데에 있다.
걱정말고 누르면 된다. (브랜치 어느곳에서 누르던 같다. 전체에서 땡겨올 것을 검사해주는 것이라 보면 된다.)
그러면 Pull이 필요한 브랜치들에 각각 표시가 뜬다.
그 브랜치로 이동을 해서 Pull로 땡겨오면 그때 병합이된다.
수정된 파일을 잘 확인 후 충돌난 파일들을 차근차근 수정해준다.
'개발' 카테고리의 다른 글
Spring 설정 (0) 2020.01.22 Spring Framework 와 친해지기 (0) 2020.01.17 TDD와 친해지기 (0) 2020.01.17 안녕하세요 (0) 2020.01.16