Github 협업

이제우·2023년 12월 23일

브랜치

브랜치란

브랜치는 소스코드를 분리하여 관리하는 개념.
하나의 저장소에서도 브랜치를 이용하여 여러 버전의 소스코드를 관리할 수 있다.(main, develop...)
각 브랜치는 독립적으로 작업이 가능하며 다른 브랜치와 병합(merge)도 가능하다.

사용이유

여러 개발자가 참여하는 팀 협업을 위해 사용한다.
각 개발자는 각각의 브랜치를 생성하여 서로의 작업에 영향을 주지 않으며 독립적으로 개발할 수 있다.

소스코드의 안정성을 위해 사용한다.
당장 배포를 해도 되는 main 브랜치, 개발코드를 관리하는 develop 브랜치, 각각 작업을 하는 feature 브랜치등으로 구분하여 안정적인 코드와 개발중인 코드를 구분할 수 있다.

Squash Merge

branch를 생성하여 이동하고 개발을 한 뒤, 다시 원래의 branch로 merge를 할텐데.
이 때 그대로 merge를 하게 된다면 생성한 branch에서 commit한 사항이 전부 원래 branch에도 생성된다.

하지만 Squash를 사용한다면 생성한 branch의 commit을 하나로 통합하여 원래 branch에 merge하게 된다.

Squash를 사용했을 때
a--b--c (feature)
       \
        d (main)
  
Squash를 사용하지 않았을 때
a--b--c (feature)
       \
        a--b--c (main)

Squash 사용법
git merge --squash name name 브랜치의 내용을 현재 브랜치로 Squash merge 함.


명령어

git branch 브랜치 목록을 볼 수 있다.
git branch name name 브랜치를 생성한다.
git branch -d name name 브랜치를 삭제한다.(merge 되지 않은 branch는 삭제 안됨)
git branch -D name name 브랜치를 강제 삭제한다. (merge 되지 않은 branch도 삭제됨)
git checkout name name 브랜치로 이동한다.
git checkout -b name name 브랜치를 생성하고, 이동한다.

git reflog HEAD의 기록을 조회할 수 있다. 이를 통해 어떤 작업들을 했는지 알 수 있다.

단순히 commit push 뿐만 아니라 branch를 이동, 생성, 병합한 기록도 볼 수 있다.

git reset HEAD 최신 상태인 커밋을 되돌린다. 이전 커밋으로 되돌아가게 되면 최신 상태의
커밋은 '고아 상태'가 되며 삭제되지는 않는다. git reflog를 통해 고아 상태의 커밋도 조회 할 수 있다. 고아 상태의 커밋은 영원히 남아있는게 아닌 일정 기간 후 Git이 가비지 컬렉터를 실행하여 삭제한다.

git reset --hard HEAD 이 명령어를 사용해 '고아 상태'인 커밋으로 다시 돌아갈 수 있다.
또한 이 명령어로 이전의 커밋으로도 돌아갈 수 있지만, 이때는 최신의 커밋이 고아 상태로 남아 있지 않기 때문에 주의하여 사용해야 한다.

profile
게으른 사람 중에 제일 부지런하게 사는 사람이 꿈

0개의 댓글