본문 바로가기

협업툴/git(hub)

[git/git hub] 브랜치 사용하기

728x90
반응형

◎ 브랜치 만들거나 확인하기

$ git branch : main이 현재 branch
$ git branch apple : apple이라는 branch 생성


* 표시는 현재 작업하고 있는 branch입니다.

branch 추가한 후 log를 하면 아래와 같이 HEAD가 main, apple 모두를 가리키고 있습니다.

 

 

◎ 브랜치 삭제

$ git branch -d 브랜치명 

 

 

◎ 브랜치 전환

$ git switch 브랜치명


main에서 apple로 브랜치가 변경되었습니다.

 

 

◎ 한 줄에 한 커밋씩 보여주기(--oneline)

$ git log --oneline


기존에 git log 했던 것 보다 해시가 훨씬 간략하게 나타납니다.

 

 

◎ 전환한 브랜치에서 커밋하기

파일을 수정해서 커밋하면 현재 브랜치인 main에서만 커밋됩니다.


apple로 브랜치를 전환한 후 log를 하면 main은 나타나지 않고 3번째 커밋까지만 나타납니다.
이 후 또 파일 수정 후 커밋하면 apple에서만 네 번째 커밋이 나타납니다.

 

 

◎ 브랜치마다 최신 커밋 확인

$ git log --oneline --branches


ms, google은 "work 3"까지, apple은 "apple work 4"까지, main은 "main work 4"까지 커밋되어 있습니다.


$ git log --oneline --branches --graph를 사용하면 아래와 같이 연관 되어 있는 사항을 그래프로 파악할 수 있습니다.

수직선이 커밋 사이의 관계를 나타냅니다.

 

 

◎ 브랜치 사이의 차이점 살펴보기

 

$ git log main..apple

main에는 없고 apple에만 있는 커밋이 나타납니다. (apple work 4)

$ git log apple..main

apple에는 없고 main에만 있는 커밋이 나타납니다. (main work 4)

 

 

◎ 브랜치 병합하기

1. manual에서 복구해 manual-2 파일 만듭니다.

2. main에 'work 1'을 커밋합니다.(work.txt)

3. o2 브랜치를 만들고난 후 main에 main.txt를 만들어 'main work 2'를 커밋합니다.


여기까지 main 브랜치에서 work1, main work 2 커밋을 만들었습니다.


4. o2 브랜치로 전환하고 o2.txt를 만들어 'o2 work 2'를 커밋합니다.

아래와 같이 브랜치가 구성됩니다.


5.  o2의 브랜치 내용을 main 브랜치로 병합하기 위해 main 브런치로 전환 후 merge 합니다.
   ▷ 병합시에는 git merge 가져올브랜치 main 브랜치 기준으로 o2 브랜치를 병합하려면 '$ git merge o2'



 

 

◎ 병합이 끝난 브랜치 삭제하기

git branch -d 브랜치명

1. 아래와 같이 작성한다면 o2 브랜치가 삭제됩니다.


▷ 삭제한 브랜치는 같은 이름으로 다시 브랜치를 만들면 예전 작업했던 내용이 그대로 나타납니다.
▷ 즉, 브랜치를 삭제한다는 것은 저장소에서 완전히 없애는 것이 아니라 깃의 흐름 속에서 감추는 것입니다. 

 

 

◎ cherry-pick으로 병합하기

1. cherry-pick 디렉터리를 저장소로 만들고 이동합니다.


2. init.txt 파일 생성 후 스테이징, 커밋을 한 번에 처리해 줍니다. 세미콜론(;)을 이용하면 여러 명령을 한 번에 처리할 수 있습니다. touch 명령어는 빈 파일을 만듭니다.
 


3. 새로운 브랜치 topic을 만들고 깃 로그를 확인하면 init이 main과 topic 브랜치 양쪽에 있습니다.


     여기서 --all 옵션은 최신 커밋 뿐만 하니라 모든 커밋을 다 보여주기 위한 옵션입니다.


4. main 브랜치에 m1, m2라는 2개의 버전을 더 만들고 git log로 확인합니다.



5. topic 브랜치로 전환 후 t1, t2, t3 버전을 만듭니다.



6. 여기까지 2개의 브랜치가 있고 topic 브랜치의 t2 버전에서 적용했던 내용을 main 브랜치에도 적용하고 싶을 때 cherry-pick을 사용합니다. (topic 브랜치의 여러 버전 중 하나를 골라와서 병합)


7. 먼저 main 브랜치로 전환 후 topic의 t2 버전만 병합합니다. cherry-pick 명령 다음 t2에 해당하는 커밋 해시 알림


main에 t2 커밋이 추가되었고 최신 커밋이 t2로 변경되었습니다.

 

 

브랜치라는 것은 동일한 디렉토리 내에 별도의 경로를 만들어서 원하는 코드를 저장한다는 것입니다.

따라서 동일한 경로로 가다가 사용자에 따라 다른 경로가 필요할 시 사용하면 좋을 것 같아요!!

 

좀 어렵긴 하지만 어제 보다는 이해가 훨씬 잘되는 것 같네요~!!

 

많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~

 

728x90
반응형

'협업툴 > git(hub)' 카테고리의 다른 글

[git/git hub] SSH 원격 접속이란?  (0) 2023.01.03
[git/git hub] 깃허브 시작하기  (0) 2023.01.03
[git/git hub] 깃과 브랜치  (0) 2023.01.03
[git/git hub] 깃으로 버전 관리하기  (0) 2023.01.03
[git/git hub] 깃이란?  (0) 2023.01.02