Hokma Developer School :: Course 1

[Git 기초 사용법] 2. Branch

테디아저씨 2024. 9. 27. 08:29

 

 

Branch

브랜치는 "복사본" 이라고 할 수 있습니다.

 

1) 일반적으로 main 또는  master  라는 이름의 브랜치가 생성됩니다.

2) 특정한 기능을 새로 만들때 main  브랜치는 안정적인 상태로 유지하고 다른 브랜치를 만들어 실행해볼 수 있습니다.

2) 협업을 할때 각자 브랜치를 만들어 개발하고 필요시 통합( merge ) 하는 용도로 브랜치를 사용할 수 있습니다.

 

Branch 확인하기

$ git branch

* master

 

Branch 생성하기

$ git branch promotion
// 생성만 한다.



$ git branch -M reservation
// 생성하고 즉시 이동한다.


$ git brnach
// 생성된 브랜치 확인

* main
  promotion
  reservation

 

* 표는 현재 위치를 의미합니다.

 

Branch 삭제

$ git branch -d reservation


$ git brnach
// 브랜치 확인

* main
  promotion

 

Branch 이동

$ git switch shop
// 브랜치 이동

$ git switch -c shop
// 브랜치 생성하고 이동

 

Branch 병합

 

main 브랜치에서  aa.ph, bb.txt 작성 후 스테이징 +  커밋

 

promotion  브랜치에서  cc.txt, dd.txt  작성 후 스테이징 + 커밋 

 

* promotion 에서 개발한 기능을 main 에 합치기

$ git switch main

$ git merge promotion

// promotion 에 만 있었던 cc.txt 와 dd.txt 가 main 에 추가됨.

 

 

** git merge 가 되지 않고 아래 메세지가 나타난다면

 

fatal: refusing to merge unrelated histories

 

처음 초기화 한후 원격저장소를  pull 하는등 동기화가 되지 않는 상태일때  나타나는 현상이다. 

 

아래와 같은 명령어를 사용한다.

 

git pull origin 브런치명 --allow-unrelated-histories

 

 

 

충돌해결

 

main 브랜치에서  아래와 같이 shop.php 작성 후  Staging ( git add ) +  Commit ( git commit )

<?php
$item_name = "샴푸";
?>


shop 브랜치에서  아래와 같이 shop.php 수정 후  Staging ( git add ) +  Commit ( git commit )

<?php
$item_name = "린스";
?>

 

main 브랜치에서 shop 브랜치를  Merge

$ git merge shop

 

 

아래와 같이 VS CODE 에서는 충돌된 것을 안내해주고 선택할 수 있는 메뉴를 보여준다.

 

 

 

Accept Current Change : 현재브랜치의 변경 사항을 선택

Accept Incoming Change : merge 하여 받아온 브랜치의 변경사항을 선택

Accept Both Changes : 둘다 우선 선택 (  직접 수정 필요 )

 

 

Compare Change :  비교해준다.

 

 

 

Checkout 

 

브랜치 전환, 특정커밋으로 돌아가기 등 다양한 기능을 가지고 있다. ( 원격 커밋까지도 살펴볼수 있다. )

단, 최근버젼에서는 switch 가 브랜치 이동에 특화된 기능이므로 로컬 브랜치 이동은 switch 를 사용하는 것이 좋은 방법이다.

 

Checkout 이 Reset 과 다른점은 

checkout 은 branch 의 위치는 그대로 유지하고 HEAD 를 옮기는 것으로 

변경된 위치로 부터 새로운 브랜치를 만드는 등의 작업을 위해 사용합니다.

( 브랜치는 그대로 유지된 상태에서.. )

$ git checkout 커밋해쉬코드

 

그리고 그 사이의 변경사항은 unstaging 상태로 남아있다.

( 변경된 사항을 다시 add 할수 있다는 의미 )

 

checkout 으로 뒤로 이동했을때 다시 돌아갈때는 branch 명을 쓰면 됩니다.,

 

git checkout main

 

 

 

 

 

다음시간에 ... 

 

Switch

 

브랜치 전환만을 위한 명령이다.

( git 2.23 에서 추가된 기능 )

 

git switch main2                   
# main2 브랜치로 전환

git switch -c main3            
# main3 브랜치를 생성하고 즉시 전환

 

 

 

 

 

원격 브랜치 

 

원격브랜치 추가

 

1) github 에서 주소확인

 

2) 명령어로 추가하기

$ git remote add origin <remote repository url>

origin : 별칭
main : 브랜치명

 

 

원격 저장소 브랜치 확인하기

$ git branch -r

 

로컬 브랜치를 원격 특정 브랜치 이름으로 푸쉬하기 

$ git push origin <local branch>:<remote branch>

$ git push origin main:promotion

 

 

** 각자의 branch 를 만들고 원격에 push 해 본다.

 

$ git branch -r

  origin/main
  origin/branch

 

 

** 협업시에는 각자의 로컬 브랜치에서 원격 브랜치로 푸쉬를 하고

** 병합담당자에게 main 에 병합해달라고 요청한다.

** 이후에 각자는 main 브런치를 pull 하여 동기화한다.

 

$ git push <remote repository> -d <remote branch>