반응형

https://www.coursera.org/learn/introduction-git-github

 

Introduction to Git and GitHub

Google에서 제공합니다. In this course, you’ll learn how to keep track of the different versions of your code and configuration files using a popular ... 무료로 등록하십시오.

www.coursera.org

 

branch

  • 특정 커밋을 가리키는 포인터, 각 브랜치는 프로젝트의 개발 히스토리에서 최신 커밋을 나타낸다.
  • master branch는 프로젝트의 안정된 상태를 나타내며, 새로운 기능을 개발할 때마다 새로운 브랜치를 생성하여 작업한다.
  • 각 브랜치에서의 작업은 마스터 브랜치나 다른 브랜치에 영향을 주지 않고 진행될 수 있다.

 

git branch

  • 브랜치를 나열하고 생성하거나 삭제할 수 있다.

브랜치 나열

git branch

 

새로운 브랜치 생성

git branch [새로운 branch 이름]

 

브랜치 삭제

git branch -d [브런치 이름]

 

 

git checkout

브랜치 변경하기

git checkout [브랜치 이름]

 

브랜치 생성 & 브랜치 전환

git checkout -b [새로운 브랜치 이름]

 

 

git merge

개발이 완료되면 별도로 생성한 브랜치를 기존 메인 코드의 trunk에 병합한디ㅏ.

 

e.g) even-better-feature 브랜치를 master 브랜치로 병합

git merge even-better-feature

 

 

 

빠른 전진 병합(Fast Forward Merge)

빠른 전진 병합

  • 브랜치 병합 시 모든 커밋이 병합 대상 브랜치에 이미 포함되어 있으면, Git은 빠른 전진 병합을 수행한다.
  • 이 경우, 브랜치의 커밋 히스토리가 갈라지지 않았기 때문에 실제로는 새로운 병합 커밋을 만들 필요가 없고 단순히 브랜치 포인터를 업데이트 한다.

 

삼방향 병합(Three-way Merge)

삼방향 병합

  • 브랜치들의 히스토리가 어느 시점에서 갈라졌다면, Git은 삼방향 병합을 수행한다.
  • 이 경우, 각 브랜치의 가장 최근 공통 조상(공통 커밋)을 기준으로 두 브랜치의 스냅샷을 결합한다.
  • 만일 동일 파일의 동일 부분에서 변경이 발생했을 경우, Git은 이를 충돌(conflict)으로 처리하며, 이후 충돌 해결 과정을 거쳐야한다.

 

충돌

  • 충돌이 발생했을 때는 Git이 자동으로 해결하지 않고, 수동으로 충돌을 해결해야 한다.
  • 사용자가 결정하도록 하며, 최종적으로 수동으로 해결한 후에는 다시 커밋하여 병합을 완료한다.

 

git merge --abort

병합 과정에서 발생한 충돌을 해결하지 않고 병합을 포기하고 이전 상태로 되돌리는 명령어

  • 실행하면 현재까지의 변경사항이 모두 사라지므로 주의해서 사용해야 한다.
반응형