CS 지식/Git & Github

Git & Github Basic(4)

goldpig 2023. 8. 9. 14:40
728x90

branch vs main

  원본파일에 코드를 계속 짜다보면 혹시나 잘못해서 지금까지 해왔던 작업이 잘못되거나 하는 불안한 마음을 가졌던 적이 있을거다. 그래서 이런 불안과 걱정없이 안전하게 코드를 짜고 새로운 기능을 추가 하고 싶으면 프로젝트의 복사본을 만들어서 거기에 먼저 개발 하는 것이 좋다.

  또한 브랜치 사용은 협업할 때도 유용하다. 같은 프로그램을 만드는 프로젝트에서 여려명이 동시에 똑같은 소스를 수정하고 저장해버리면 난리가 날 수도 있다. 따라서 프로젝트에서 기능을 추가하고 싶으면

  • 우선, branch로 프로젝트 사본을 만들어서 거기에 먼저 개발을 진행한다.
  • 그리고 테스트를 진행한 후 통과하면 main branch에 다시 합친다. 

이런식으로 개발을 진행하면 더 안정적으로 프로젝트를 수행할 수 있다.

git 안에서 branch 기능을 이용해서 복사본을 쉽게 만들 수 있다. 이해를 돕기 위해 예를들어, 프로젝트를 진행하고 있는데 새로운 기능을 추가한다고 가정해 보자. 대신 원래 있던 즉, 원래 작업하던 소스코드를 수정하는 것이 아니라 프로젝트 사본을 만들어서 거기에 먼저 개발을 하는 것. -> branch를 만들면 된다. *원본파일도 결국에는 main branch

git branch 브랜치명

예를들어, git branch sample 이라고 작명을 하고 이렇게 만든 sample 브랜치로 이동하고 싶으면 git switch sample 명령어를 입력하면 된다. 다시 메인 브랜치로 되돌아가고 싶으면 git switch main 하면된다. (설정에 따라 main or master 일 수 있음)

git switch sample

어떤 브랜치에 와있는지 까먹었으면 git status 입력하면 된다. sample 브랜치로 이동했으면 이 브랜치에서 개발하고 commit을 자유롭게 할 수 있다. 원본 파일이 아니기때문에 혹시 잘못될거 같은 걱정없이 개발을 진행 할 수 있다. 즉 sample branc에서 작업한 내용은 원본 브랜치인 main branch or master branch에 아무런 영향을 미치지 않는다.

*git log --all --oneline 을 통해 commit 차이점을 비교할 수 있고, git log 명령어에서 나오는 HEAD 는 현재 나의 위치라고 생각하자.

branch 합치기 -> branch merge

그러면 이렇게 sample 브랜치에서 작업한 내용을 원본 파일에 적용하기 위해서는 어떻게 해야할까? 즉 branch sample 내용을 main branch or master branch merge. 따라서 sample 브랜치에서 개발했던 내용을 main 브랜치에 더해줄 수 있다. 

git switch main
git merge 브랜치명

merge 하기

  1. main/master 브랜치로 이동하기: git swtich main/master
  2. git merge 브랜치명(복사본명) 입력하기: git merge sample

즉, git merge sample 이러면 sample 브랜치의 코드들이 main/master 브랜치에 합쳐진다.

❗️주의 사항

merge를 할 때 주의할 사항이 있는데, 예를들어 main 브랜치와 sample 브랜치에서 같은 파일, 같은 줄을 수정했을 경우 merge conflic가 발생한다. 이 경우 에디터로 해당 파일을 열어보면 충돌사항이 적혀 있다.

이때, merge conflict가 발생하는 이유는 같은 파일의 같은 줄을 수정했기 때문에 git이 sampe과 main 중 어느것을 채택해야 하는지 혼란스럽기 때문이다. 따라서 에러를 해결하기 위해서 우리는 어떤것을 적용하지 선택하면 된다. 에디터에서 <<</>>>/=== 이런것들을 다 지우고 원하는 코드만 남기면 된다.

에디터의 경우 VScode 기준, Accept incoming Change 버튼들을 누르면 된다. 이제 어떤 코드를 남길지 선택을 했으면

git add 파일명
git commit -m "아무 메시지"

마침내 입력하면 새로운 commit 을 생성해주고 merge conflic 해결 하면서 sample 브랜치를 main 에 합칠 수 있다.

728x90