Coding Planet
왕초보 git branch 전략 & git bash사용법 정리 본문
반응형
| git branch 기본 전략
- git workflow에서는 항상 유지되는 메인 브랜치(main, develop)과 일정 기간 동안만 유지되는 보조 브랜치들(feature, release, hotfix)을 합하여 총 5개의 브랜치를 사용한다.
- 다만 프로젝트의 규모와 관리의 용이성을 고려하여 다음 세개의 브랜치만을 사용하고자 한다.
1) Main Branch(Master Branch)
- 제품으로 출리될 수 있는 브랜치로 배포 이력을 관리한다. 즉, 배포 가능한 상태만을 관리하므로 개발중에는 merge 하지 않는다.
- github setting에서 잠궈두었으므로 push시 오류 발생하니 주의할 것.
2) Develop Branch
- 다음 출시 버전을 개발하는 브랜치이다. 기능 개발을 위한 브랜치들을 병합하기 위해서 사용하는 브랜치로 개발자가 개발한 기능은 Develop Branch에서 병합하게 된다.
- 개발리더가 Develop Branch를 관리하며 pull request 생성시 오류(conflict)를 관리하여 병합하도록 한다.
3) Feature branch
- 기능을 개발하는 브랜치로 새로운 기능 개발 및 버그 수정이 필요할 때마다 develop 브랜치로부터 분기한다.
- feature 브랜치는 독립적인 영역으로 기본적으로 공유될 필요가 없기 때문에 자신의 로컬 저장소에 연결하여 관리한다.
- IntelliJ, VSCode등에 연결되어있는 원격저장소이다.
- 원칙적으로 [feature/login]과 같이 기능으로 분리하지만 프로젝트에 따라 개발 영역이 인력별로 나뉘어 있는 경우 [feature/sharon]과 같이 본인의 업무 범위를 분장하여 사용 및 관리할 수 있다.
| git bash 설치하기
- git bash는 git과 연동되어 있는 유닉스 쉘로 리눅스 커맨드를 사용하여 형상관리를 할 수 있다.
- 아래 사이트에 접속하여 Download for Windows를 클릭하여 설치한다.
- 실행파일 설치시 환경 설정은 블로그 글 참고(https://velog.io/@selenium/Git-Git-Bash-%EC%84%A4%EC%B9%98-Windows-OS)
| Local Repository 생성
- WorkSpace를 생성한다. 작업이 진행되는 프로젝트 폴더로 소스코드로 작업 후 코드가 변경되면 이후 연결된 remote repository로 병합된다.
- 현재 폴더 안에서 오른쪽 클릭을 통해 git bash를 실행한다. git bash가 안보일 경우 더 많은 옵션 보기 확인.
- 아래 이미지는 이미 설정을 완료한 상태이므로 처음에서는 .git, README 둘 다 없다.
| Local Repository에서 development 생성 후 Remote Repository와 연결
- 이 부분은 github 관리자가 진행하는 단계로 관리자가 아닐 경우 다음 파트로 넘어가면 된다.
- git checkout -b development
- git을 사용하여 새로운 브랜치를 만들고 해당 브랜치로 전환하는 명령어 이이다.
- checkout : git에서 브랜치를 전환하거나 파일을 복원하는데 사용하는 명령어
- -b development : 새로운 브랜치를 생성하고 그 브랜치로 이동하는 것을 지정하는 명령어. development는 새로 만들려는 브랜치의 이름이다. 만약 development가 존재할 경우 해당 브랜치고 이동한다.
- 이 단계는 development를 생성하는 단계로 아직 remote된 것이 아니다.
- git push --set-upstream origin development
- git을 사용하여 현재 작업 중인 로컬 브랜치인 development를 원격저장소(origin)로 푸시하고 동시에 로컬 브랜치와 원격 브랜치간의 연결을 설정한다.
- --set-upstream: 로컬 브랜치와 원격 브랜치를 연결하는 설정으로 이후 'git push' 만 입력해도 자동으로 연결된 원격 브랜치로 push하게 된다.
| Development Clone하기
- 팀원들은 환경설정이 환경설정이 되어 github development에 저장되어 있는 파일을 복사하여 자신의 로컬 저장소에 저장하게 된다.
- git clone {url}
- url은 각 github에서 가져올 수 있다.
- 이 때 clone을 해온 repository 내부로 이동해야한다. ls(목록출력 명령어)를 써서 가져온 폴더를 확인하고 cd 명령어를 통해 해당 폴더의 bash로 이동한다.
- 정상적으로 설정되었다면 WorkSpace에 아래와 같은 폴더들이 있어야 한다.
- git branch -a 명령어를 통해 현재 원격 저장소에 생성된 브랜치 목록을 확인할 수 있다. 이 때 clone을 해야할 레파지토리는 development이다.
- $ git checkout -t origin/development
- Git에서 원격 저장소('origin')의 development 브랜치를 로컬러 가져와서 이를 현재 작업 중인 브랜치로 체크아웃 하는 명령어이다.
- '-t' 혹은 '--track' 옵션은 원격 브랜치와 로컬 브랜치 간의 연결을 설정한다.
- $ git checkout -b feacher/본인이름
- 원격 저장소에서 가져온 development를 이용해 각자의 브랜치를 만든다. 이 때 반드시 development로 이동되어 있는 상태여야 한다.
- $ git checkout -t origin/development
- -u : default 설정
- 따라서 앞으로 git push만 입력하고 경로지정을 하지 않아고 자기 브랜치로 push된다.
| Local Repository에서 Remote Repository로 Push하기
- push를 진행하기 전 작업한 내용을 올릴 원격 브랜치가 올바르게 설정되어 있는지 확인한다.
- 'git add + 파일명.확장자' 명령어를 통해 WorkPlace에서 작업한 내용을 Staging Area에 올린다. 이 때 'git add . ' 입력 시 변동된 사항 모두가 반영된다
- 'git commit -m [ 변동사항 메세지 작성] '을 통해 변경사항을 Staging Area에서 Local Repository에 올린다. git commit 명령어만으로 commit은 정상작동하지만 가독성을 위해 ' 담당자 / 작업 내용/ 일시' 등 컨벤션을 활용할 수 있도록 '-m' 옵션을 쓰는 것을 권장한다.
- 'git push' 이전에 연결된 원격 레파지토리에 반영시킨다.
** 현재 내 로컬 레파지토리의 변경 내용이 어느단계까지 반영되었나를 확인하기 위해서는 'git status'명령어를 사용한다. 변경되었지만 add가 되지 않은 파일명은 붉은색으로 표시되고 add 후 commit이 가능한 파일은 초록색으로 표시된다.
| Git hub에서 pull request 생성하고 merge하기
- github 메인페이지에서 main과 development 혹은 development와 feacher의 버전이 상이할 경우 Compare & pull request 버튼이 생성된다.
- 이버튼을 클릭해서 변경된 버전이 기존 버전과 문제(conflic)없이 병함(merge)될 수 있는지 확인 후 문제가 없다면 병합하면 된다.
- 기본적으로 merge는 gibhub 저장소 관리자가 수행하는 것이 좋다.
| development에 올려진 내용을 pull하는 방법
- git pull origin development
반응형
'etc' 카테고리의 다른 글
[intelliJ] to_char : Unknown database function 'to_char' (0) | 2023.11.01 |
---|---|
tiles 설정 정리 (0) | 2023.10.25 |
개발자 기술면접 빈출 문제 - udpate 중 (0) | 2023.09.13 |
크롬에서 JSON으로 출력하기 위한 방법 - JSON Formatter (0) | 2023.08.18 |
[ Docker ] cmd 자주 사용하는 명령어 (0) | 2023.05.23 |
Comments