Branch 이론

SolMi_Koh·2023년 7월 12일
0

github

목록 보기
5/5

협업 실습 : repo에서 가져와 branch에서 수정하고 pull request 보내기

  1. git clone
  2. git branch 브랜치명
  3. git switch 브랜치명 (또는 2,3번 대신에 git switch -c 브랜치명)
  4. 내용 수정 및 저장
  5. git add .
  6. git commit -m"커밋내용"
  7. git push origin 브랜치명

branch

  • 현재 작업 중인 내용 유지하면서 파일과 커밋 기록을 별도로 관리하고자 할 때 사용
  • 분기하면 그때부터는 커밋 기록이 완전히 별도로 관리됨

개념적인 부분을 자세히 공부하고 싶다면 여기를 참고하자
(브랜치 용어정리, checkout, switch, merge, rebase, conflict)

명령어 참고

  • branch 목록 보는 명령어들
	git branch
    git branch --list
    git branch -a
    git branch -all
  • branch 생성과 동시에 이동
	git switch -c 브랜치명
	git checkout -b 브랜치명
  • 충돌
    같은 줄이어도 기존 데이터를 건드리지 않고 추가하는 것은 상관없다

  • 초기화 (git 관리 상황 지우기)
    : git init 이전으로 되돌아간다.

  rmdir/ /s /q .git (윈도우용)
  rm -rf .git (윈도우 -깃배쉬)
  • 삭제
  git branch -D 브랜치명
  • 그래프 형태로 커밋 기록 보는 명령어
	git log --graph --decorate --oneline
  • 가지치기 (원격 저장소 github에 없는 거 삭제. 동기화과정, github에서 삭제된 repo를 반영.)
	git fetch --prune

Fast-forward

  • Fast-forward 란?
    커밋기록을 땡겨오기 때문에분기된 커밋기록이 아니라 일자로 된 커밋기록이 생긴다!

장점: 분기점이 남지 않기 때문에 커밋 기록을 더 직관적으로 볼 수 있다
단점: 머지했다는 기록도, 분기점도 없다.

기록을 남기고 싶다면 어떻게 해야할까?

fastforward쓰지 말라는 뜻

git merge develop --no-ff
  • --no-ff 옵션
    : 기능 분기에 대한 명확한 개념을 원할 때 유용
    : fastforward를 금지시킴

Rebase

  • no fast-forward 형태인 것을 fast-forward형태로 바꾸기
	git rebase
💡 rebase 는 정확히 말하면 병합을 위한 것이 아니라, 커밋 히스토리를 정렬하기 위한 명령어. 이미 병합이 된 브랜치가 있더라도, 거기서 rebase 를 하면 커밋 히스토리를 다시 정렬할 수 있다.
💡 rebase 는 커밋 이력을 단순히 관리하고 싶을 때 사용하는 명령어이고, merge 는 변경 이력을 모두 남기고 싶을 때 사용하는 명령어. 커밋 이력을 남기는 것이 중요하기 때문에 보통은 merge 만을 사용.

Pull

pull
= fetch(원격 저장소 내용가져오기) + merge(그 내용을 로컬 저장소에 머지)

  • pull할때도 병합 방식을 지정할 수 있다.(--ff 또는 --no-ff)
  • 만약 merge하고 싶지 않다면 fetch만 사용하면 된다!
profile
고수가 되기까지

0개의 댓글