branch

yeji kang·2020년 7월 10일
0

git,github

목록 보기
5/5

브랜치(branch)?

하나의 코드 관리 흐름 (나뭇가지)

  • 하나의 프로젝트를 여러 갈래로 나누어서 관리할 수 있습니다.(여러 가지 버전으로 관리 )
  • ex ) 무료버전, 유료 버전 / 실제 배포용 버전,개발용 버전, 테스트용 버전, 긴급 버그 수정용 버전

On branch master :마스터 브랜치 위에있다.
마스터 브랜치 : 레포지토리를 만들고 커밋을 하면 자동으로 생기는 브랜치. 즉 기본 브랜치

브랜치를 만들어봅시다.

git branch [이름] : 브랜치 만들기

git checkout [브랜치이름] : 특정 브랜치로 이동하기

따라해보기

- premium이라는 브랜치 만들기
- premium으로 이동하기
- git status 로 확인하기 'On branch premium' 

branch 에서 작업하기

  • 파일 수정하고 저장 (Free 에서 Premium으로 수정)
  • premium branch에서 git add 하기
    • cat License를 통해 수정된 파일 볼 수 있었습니다.
  • master branch에는 영향이 가지 않았습니다.

다뤄보기

간단한 기능들!

git branch: 모든 브랜치 조회

git branch -d [브랜치명] : 브랜치 삭제

git checkout -b [브랜치명] : 브랜치 만들면서 동시에 그 브랜치로 이동

merge 하기

git merge [기존 브랜치 이름] : 현재 위치인 브랜치에 다른 branch를 합친다는 의미

간단한 예제 따라해보기

  1. master 에서 cal.js에 divide 함수를 추가하고 git add와 commit 하기

  2. premium에서 cat cal.js를 해서 파일을 확인하기 (여기에는 divide 함수가 없음)

  3. git merge master 라고 입력 commit message 작성하기.

    • master에서 작업한 cal.js를 premium 의 cal.js에도 똑같게 만드는 작업

conflict

머지를 하다가 충돌 발생!

  1. 컨플릭트가 발생한 파일을 연다.
  2. 머지의 결과가 되었으면 하는 모습대로 코드를 수정
  3. 커밋

머지 작업 취소

git merge --abort : 머지를 시도하기 이전의 상태로 돌아가게됩니다. 머지 취소

  • abort : 버리다 취소하다

여러 파일에서 conflict

git status : 현재 conflict가 발생한 파일들의 목록 확인.

브랜치 push 하기

처음 로컬레포지토리에서 리모트 레포지토리로 올릴 때 --set-upstream 을해야합니다.
(tracking설정을 위해)
ex ) git push --set-upstream origin premium

HEAD , branch

git checkout [branch 명] : HEAD를 가리키는 브랜치를 바꾸는 의미

HEAD 는 브랜치를 통해 간접적으로 가리키는 존재(포인터)
브랜치는 커밋을 가리키는 존재(포인터)

merge commit : 헤드가 가리키던 커밋에 다른 브랜치가 가리키던 커밋을 합쳐서 새로운 커밋을 만드는 작업

git reset

  1. 과거의 커밋으로 git reset을 한다고 그 이후의 커밋들이 삭제되는 게 절대 아닙니다. 계속 남아있습니다.
  2. git reset은 과거의 커밋뿐만 아니라 현재 HEAD가 가리키는 커밋 이후의 커밋으로도 할 수 있습니다.

git reset vs git checkout

git reset

  • HEAD가 가리키던 브랜치가 다른 커밋을 가리키도록 한다.
  • HEAD도 결국 간접적으로 다른 커밋을 가리키게되는 효과가 생긴다.

git checkout

  • HEAD 자체가 다른 커밋이나 브랜치를 가리키도록 한다.
  • 브랜치를 통하지 않고, 커밋을 직접적으로 가리키는 HEAD를 Detached HEAD라고한다.

(이유-> 과거의 특정 커밋에서 새로운 브랜치를 만들고 싶을 때 )

merge

  • Fast-forward 머지
  • 3-way 머지

0개의 댓글