코딩고치

[Git] 브랜치 본문

Git

[Git] 브랜치

코딩고치 2020. 5. 5. 22:57

브랜치

  • 코드를 작성함에 따라 코드의 흐름이 달라질 수 있다. 이 각각의 흐름을 브랜치라고 한다.

  • 처임 레포지토리를 만들고 커밋을 하면 기본적으로 생기는 브랜치를 master branch라고 한다.

 

  • 위 사진에서 현재 master branch에 있음을 알 수 있다.

 

  • 지금까지 커밋한 것이 하나의 흐름이고 이것이 branch이다.

  • git branch [브랜치 이름]을 입력하면 된다.

  • 브랜치를 만든 후 작업을 하기 위해서 git checkout [브랜치 이름]을 입력하여 해당 브랜치로 이동해야 한다.

 

  • 해당 브랜치로 이동하여 커밋을 하는 것은 master branch에는 영향을 주지 않는다.

  • 파일을 수정한 후 해당 파일을 출력을 하면 master branch와 premium branch에서 출력 값이 다른 것을 확인할 수 있다.

  

  • 현재 레포지토리에 있는 브랜치 조회

    • git branch 입력

  

  • 브랜치 삭제
    • git branch -d [브랜치 이름]

  

  • 브랜치를 만들면서 해당 브랜치로 이동
    • git checkout -b [브랜치 이름]

   

브랜치 합치기

  • master brunch에서 한 작업을 premium branch에 그대로 가져올 수 있다.
    • git merge master : 현재 브랜치에 master branch에서 한 작업을 합친다.

  

  • 위 명령어를 입력하면 나오는 창우로 커밋 메시지를 입력할 수 있다.
    • 입력 후 :wq로 저장하여 나가면 된다.

  

오류가 나는 경우

  • master branch와 premium branch 각각에서 동일한 함수의 이름을 delete_free, delete_premium으로 바꾼 후 커밋

  • 그 후 premium branch에서 master branch를 merge 하려고 하면 오류가 발생한다.

  

  • 소스 코드를 확인하면 다음과 같이 나타나게 된다.

  

  • 충돌을 해결하려면 소스 코드에서 함수 이름을 다시 원하는 대로 바꾸고 저장 후 커밋을 하면 된다.

  • merge 자체를 취소하려면 git merge --abort를 입력해 주면 된다.

git hub에 push 하기

  • 현재 리모트 레포지토리 (git hub의 레포지토리)는 이전 단계의 커밋에 머물러 있다.
  • git hub에 업데이트하려면 master branch와 premium branch에서 각각 push를 해주어야 한다.

  

  • master branch에서는 push가 정상적으로 작동하고 리모트 레포지토리의 head도 최신 커밋을 가리키고 있다.
  • premium branch에서의 경우에는 에러가 발생한다.
    • 리모트 레포지토리에는 premium branch가 생성되어 있지 않기 때문
    • git push --set-upstream origin premium을 입력하여 생성해 주어야 한다.

  

  • 위 명령어를 입력하면 리모트 레포지토리에도 premium branch가 생긴다.
  • git hub에 접속하여 확인하면 branch가 2개가 되어 있고 그 안에 premium branch가 생긴 것을 볼 수 있다.

  

head가 가리키는 것

  • head가 가리키는 것은 브랜치를 가리킨다.
    • 브랜치는 커밋을 가리킨다.
    • 이로 인하여 head가 커밋을 가리키는 것처럼 보인다.

  

  • git reset을 하면 브랜치가 가리키는 커밋이 달라져 결과적으로 head가 가리키는 커밋도 달라진다.

  • git checkout를 이용하여 head가 가리키는 브랜치를 바꿔주었다. 하지만 이것을 이용하여 직접 head가 특정 커밋을 가리키게 할 수 있다.

    • git checkout [커밋 아이디]
    • head가 해당 커밋을 가리킨다. 이를 detached head라고 말한다.

  • 이 상황에서 새로운 브랜치를 만들고 head가 그 브랜치를 가리키게 하면 3번 커밋을 시작으로 새로운 브랜치가 시작된다.

'Git' 카테고리의 다른 글

[Git] 커밋 취소하기  (0) 2020.05.11
[Git] git fetch  (0) 2020.05.11
[Git] 커밋  (0) 2020.05.05
[Git] 커밋 히스토리  (0) 2020.05.04
[Git] 다른 사람의 프로젝트 가져오기  (0) 2020.05.04
Comments