Coding Planet

왕초보 git branch 전략 & git bash사용법 정리 본문

etc

왕초보 git branch 전략 & git bash사용법 정리

jhj.sharon 2023. 10. 16. 13:57
반응형

| 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 설치하기

https://git-scm.com/

 

Git

 

git-scm.com

 

 

 

 

| 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

반응형
Comments