본문 바로가기
프로그래밍/Git & Github

2021년 7월 24일 - Git 사용법 (2)

by 철제백조 2021. 7. 25.

 

● 본 공부와 기록은 유튜버 '얄팍한 코딩사전' 님의 "가장 쉬운 Git 강좌 - (상) 혼자작업편"을 기본으로 하였다.

https://www.youtube.com/watch?v=FXDjmsiv8fI&list=PLBJJM_3zIlbVl3u4oz1IFq9uXVShzKe0l

 

☆ Branch

→ 분기를 나누어 새로운 평행우주를 만드는 것이다.

 

Ⓐ CLI - VS Code로 하는 방법

 git branch (브랜치 이름)을 입력해 나만의 브랜치, 평행우주를 만든다. 여기서는 git branch my-idea라고 입력했다.

→ 명령어를 입력한 시점에서 두 개의 분기로 나뉘어졌다고 볼 수 있다. 여기에 다시 git branch를 입력하면

 

→ 기존 브랜치인 Master, 새로 만든 my-idea로 분류되어있다.

→ my-idea 브랜치로 넘어가기 위해서는 git checkout my-idea를 입력하면 된다.

 

→ 아직 변화가 없는데, 새로 만들어진 브랜치는 원 브랜치의 상태를 그대로 따라가기 때문이다.

→ 그럼 이 평행우주에서 나만의 작업을 이어나갈 수 있다.

 

→ 쥐는 잡고, 공룡을 추가해서 이름을 둘리라고 지어본다. 그리고 캡슐에 넣어 묻어준다.

→ 명령어는 늘 git add -A git commit -m "(메모)"로 한 쌍을 이룬다고 봐도 무방하다.

 

→ 다시 본래로 돌아가고 싶다면 git checkout master를 입력하면 감쪽같이 전과 같은 상태로 돌아간다.

 

 

Ⓑ SourceTree로 하는 방법

→ 브랜치 보기를 눌러 펼쳐보면 master와 my-idea가 존재하고, master에 체크가 되어있다. 원하는 브랜치를 더블클릭해서 원하는 브랜치를 왔다갔다 할 수 있고, 파일의 상태가 변하는 것도 알 수 있다.

 

→ 그럼 my-idea에서 또 새 브랜치를 따보자. my-idea로 체크아웃에서 상단의 브랜치 버튼을 누른다. 그럼 my-idea를 부모로 둔 자식 브랜치가 생성된 것을 알 수 있다.

 

 

→ my-idea로부터 파생된 브랜치이기에, my-idea의 상태를 그대로 가지고 있는 걸 볼 수 있다.

 

 다른 우주에서 가지고 오기 Merge

Ⓐ CLI - VS Code로 하는 방법

→ 각 평행우주에서 있었던 일을 마스터 브랜치로 가지고온다.

→ 먼저 마스터 브랜치로 돌아온다. (VS Code를 사용하든 SourceTree를 사용하든 상관없다.)

 git merge (변화를 가져올 브랜치명)을 입력. 해당 예제에서는 git merge my-another-idea 입력

 

 git log --graph --all --decorate 입력시 시각화된 두 분기에서의 작업내역을 볼 수 있다.

 

 

Ⓑ SourceTree로 하는 방법

→ 기준이 되는 브랜치에서 병합할 브랜치를 우클릭한 뒤, Merge 클릭

 

⑨ 예외

※ 위의 예는 수정한 파일이 서로 다르기에 병합이 매끄럽게 이루어진다.

※ 그러나 브랜치 두 개가 같은 파일의 같은 파일, 같은 라인에 수정을 가한 상태일 경우, Merge를 할 시에는 Conflict가 일어난다.

 

→ 위의 예시에서는 bark 부분을 수정하고 오라는 뜻이다.

→ 둘 중 하나를 택일해서 다른쪽을 지워주고 저장한다음, git add -A git commit만 입력한다.

 

→ 병합할 것이라는 메시지가 이미 입력되어 있는 걸 확인할 수 있다.

 :wq로 저장해주면 merge가 완료된다.

※ Conflict를 수정하는 건 꽤나 피곤한 일이기에, 여러 브랜치들을 작업할 때나 협업할 때는 가능한 다른 브랜치들이 같은 파일을 수정하는 일을 피해서 작업하는 것이 좋다.

 

⑩ Rebase

 다른 평행우주에서 작업한 내용을 가져오는 또 다른 방법이다.

→ 실제 프로젝트 진행시 여러 갈래들이 합쳐지고 분기하게 되어 복잡해지는 경우가 존재한다.

→ 이럴 때 모든 변경내역들이 한 줄로 깔끔하게 정리되었으면 좋겠다 싶을 때 merge 대신 rebase를 사용한다.

 

Ⓐ CLI - VS Code로 하는 방법

 rebase my-another-idea 입력

→ SourceTree로 확인시 분기들이 깔끔하게 정리된 걸 확인할 수 있다.

 

 

Ⓑ SourceTree로 하는 방법

→ SourceTree로 rebase를 하기 위해서는 병합 대신에 재배치를 선택해주면 된다.

 

※ Merge와 Rebase 차이

 

→ 팀의 성격에 따라 Merge나 Rebase 중 적절한 것을 선택해 사용하면 된다.

 

⑪ 브랜치 지우기

Ⓐ CLI - VS Code로 하는 방법

 git branch -D (브랜치명)

 

Ⓑ SourceTree로 하는 방법

→ 삭제를 원하는 브랜치에 우클릭 후, 삭제

 

 

 

 끝으로...

→ 혹시나 하는 마음에 얄팍한 코딩사전 님께 유튜브 댓글로 올려주신 강의를 토대로 공부했고, 그걸 정리했다고 댓글을 남겨두었는데...

 

→ 대부께서 직접 답변해주셨다...! 공부할 맛이 나는 거 같다. 열심히 해서 꼭 도전하는 개발자로 성장하고 싶다는 생각이다 :)

 

댓글