코드노트

TIL / Branch, git flow, brew 본문

Code note/TIL, WIL

TIL / Branch, git flow, brew

코드노트 2022. 12. 16. 17:56

Branch

- 분기점을 생성하고 독립적으로 코드를 변경할 수 있도록 도와주는 모델

- 다른 브랜치의 영향을 받지 않기 때문에 여러 작업을 동시에 진행할 수 있다


Branch command

git branch

- 현재 브랜치 확인

 

git branch 이름

- 브랜치 생성

 

git switch 이름

- 브랜치 이동할 때

 

git branch -D 브랜치이름

-브랜치 지우기

 

git merge 브랜치이름

- 다른 브랜치로 작업한 결과물을  가져온다.

- 가져올 브랜치로 이동 -> 가져올 브랜치 이름을 명령

 

git branch --merged

- merge된 branch 표시

 

git branch -no--merged

- merge되지 않은 branch 표시

 

브랜치 이동 후, git push origin -u 브랜치이름

- 브랜치 github에 올리기 / main으로 이동 후!

 

git branch -r

- 리모트 저장소 branch 정보

 

gir branch -a

- 로컬, 리모트 저장소의 모든 branch 정보

 



브랜치 작업 순서

 

브랜치 치기 -> 작업 -> merge -> add -> commit -> push



git flow

 

git-flow cheatsheet

 

danielkummer.github.io

- 브랜치 모델을 쉽게 사용할 수 있도록 명령어를 정하고 구현해놓은 git의 확장버전 이다.

- 간단한 명령어를 통해서 브렌치 모델에서 필요한 브랜치 동작들을 수행하고 버전별로 관리가 가능하다.

git flow 는 5개의 브랜치가 사용

- master

정식 배포가 되는 코드가 관리되는 곳, 배포해도 될 만큼 안정성이 충분히 검증된 코드들만 병합되어야 한다!

 

- develop

개선된 코드, 버그 수정 코드, 기능 추가 코드 등 PR요청을 거치게 되면서 병합되는 곳

 

- feature

여러명의 개발자들이 공동, 혼자 작업할 수 있는 브랜치, feature에서 코드를 작성하고 develop로 merge한다.

 

- release

릴리즈를 하기 위한 목적으로 생성되는 브랜치, develop 기반으로 생성, 테스트 이후 릴리즈 브랜치 코드가 안정적이다면 master 브랜치에 병합 후 릴리즈에 해당하는 태그 생성, 릴리즈 브랜치가 생성 및 반영 후에는 develop브랜치에도 반영

 

- hotfix

master기반으로 생성, 긴급한 패치들이 이루어지는 곳!

 

* git flow

 (hotfix)- master -(release)- develop - feature


git flow m1 사용자라면!

 

m1이라면?

 

M1칩 Mac에서 Homebrew 설치방법

M1칩을 탑재한 새로운 맥(Big Sur)에서 Homebrew를 설치하려면 /bin/bash -c "$(curl -fsSL https://gist.githubusercontent.com/nrubin29/bea5aa83e8dfa91370fe83b62dad6dfa/raw/48f48f7fef21abb308e129a80b3214c2538fc611/homebrew_m1.sh)" 위의 명령

designdepot.tistory.com

- 여기 블로그에서 정리를 정말 잘해두었다! brew 설치후에도 실행이 안된다면 꼭 확인해보자!


brew 설치 링크

 

Homebrew

The Missing Package Manager for macOS (or Linux).

brew.sh



git flow 기본 동작 순서 및 방식 정리

 

- git flow init 전에는 브랜치 정리. main 외에는 삭제

- git flow init 이후 이름들을 확인하고 enter!

- develop 브랜치가 생긴걸 확인!

(feature는 develop에서 쳐진다.)

 

- git flow feature start nav 명령어로 nav 생성

- 그 후 브랜치를 확인해 보면 feature/nav 명으로 브랜치가 쳐진걸 볼 수 있다.

 

- 파일 수정 후, add, commit -> git flow feature finish nav를 하게 되면 feature/nav 브랜치는 지워지고 자동으로 develop에 적용

 

git flow release start v0.1 릴리즈 노트 등록

 

- commit 후 git flow release finish 버전 등록 후 commit에서 첫번째는 enter 두번째는 relase 작성, 세번째는 tags 정보

 

 

- git push -u origin develop 

 

 

- main 으로 브랜치 변경 후 push

 

- git tags버전 확인 후 tags도 push


브랜치 사용시 충돌 해결하기!

- 브랜치를 사용하다보면 CONFLICT 충돌이 나는 경우가 자주 있다.

- 당황하지 말자! 다른 브랜치에서 같은 파일을 수정하거나 작업하게 되면 나오는 거니깐..!

 

 

- 충돌 된 내용도 git status로 Unmerged에서 확인하고 수정하면 된다!

 

git 은 단순하면서도 친절하다 모든 내역은 남아있다. 당황하지말고 구글링하자..!!


git flow command

git flow init

- 프로세스 별로 사용할 브렌치 이름을 입력할 수 있다.

* 대부분 기본 이름으로 사용되기 때문에 이 과정을 건너띄려면 git flow init -d 명령어를 사용하자!

 

git flow feature start 이름

- 특정한 기능을 개발하기 위한 브랜치가 필요한 경우에는 feature를 이용

- 새로운 개발을 위한 브렌치가 생성된다.

 

 

git flow feature finish 이름

- 작업이 완료 되면 사용하는 명령어

- 명령어가 실행되면 develop 브렌치로 체크아웃 한 후 feature 브랜치의 변경된 내용을 자동으로 develop에 merge한다.

- 그 후 작업이 끝난 브랜치는 삭제된다.!

 

git flow feature publish 이름

- 여러 개발자와 공동으로 개발하고 싶을때 원격 서버에 게시할 수 있다.

 

 

git flow feature pull origin 이름

- 다른 사용자가 게시한 기능을 가져오는 명령어

 

git flow release start 버전(v0.1)

- release start를 하게 되면 develop 브렌치의 내용을 기반으로 release/브랜치 이름 의 새로운 브랜치가 생성하고 checkout한다.

 

git flow release finish 버전(v0.1)

- release 점검이 끝났으면 finish한다.

 


git flow 에서 reset과 revert

- 누구나 실수한다 그러나 실수도 남겨놓자! 나중에는 뼈와 살이 된다.. 그렇겠지?

 

reset 존재 자체를 지워버리는, 어떤 기록도 남지 않는다.

revert 지우고 기록을 남긴다.

 

▶ commit되돌리기

git revert --no-commit HEAD ~3...

- --no-commit 커밋하지 않고!!

- 하나의 커밋은 HEAD가 아닌 이름으로, 여러개의 커밋을 지울 땐 이렇게 사용하자.