[생활코딩] 형상관리/GIT3 branch & conflict

GIT3 branch & conflict - 브랜치의 기본사용법

Ben의 프로그램 2023. 5. 13. 22:03
728x90

브랜치 기본 사용법 1

  • 브랜치의 환상적인 기능들에 대해서 알아보겠습니다. 
  • 브랜치를 만들고 브랜치를 들여다보는 것을 해보겠습니다. 
  • 우리의 고객사들이 생겨서 고객사들마다 관리를 해야할 때 우리는 branch 를 활용해서 아주 세련되게 이 문제를 해결할 수 있습니다

  • git log 를 할건데 몇가지 옵션을 줄겁니다. 
  • --all 을 해주면 모든 브랜치의 git log history를 출력하게 됩니다
  • --graph 를 해주면 브랜치의 형성 상태를 그래프로 표시해주어 시각적으로 더 도움이 됩니다. 
  • --oneline 은 여러 줄의 복잡한 출력보다는 딱 한줄로 버전을 표현해 줍니다. 

  • git branch 를 입력해 볼까요?
  • main 이라는 것이 나오는데, 이것이 의미하는 것은 우리가 사실 지금까지 main 이라는 branch 위에서 작업을 해오고 있었다는 것을 의미합니다. 

  • apple 고객사를 위한 branch 를 만들고 싶다면 git branch apple 을 해주면 됩니다. 
  • git branch 를 해보면 main 과 함께 apple 이라는 branch 가 생성된 것을 볼 수 있습니다. 
  • * 별표가 main 에 있다는 것은 우리가 현재 main branch 위에 있다는 것을 알려주는 것입니다. 

  • 이 상태에서 git log --all --graph --oneline 을 해보면 main 과 함께 apple 이라는 branch가 함께 생성된 것을 알 수 있습니다. 
  • 또한 HEAD 라는 것이 main 을 가리키고 있는 것을 알 수 있습니다. 이것이 의미하는 것은 현재 우리는 main 에 속한 상태라는 것을 의미합니다. git branch 에서 main 앞에 * 별표가 붙어 있던 것과 같은 것을 의미하는 것입니다. 

  • git branch google 과 git branch ms 로 google branch 와 ms branch 도 만들었습니다. 
  • 이렇게 되면 ms, goolge, apple branch 들은 모두가 HEAD 가 main 을 보고 있는 상태에서 만들었기 때문에 work 3 라는 공통점을 가지고 있는 상태입니다. 

  • 이 상태에서, master content 4 라는 내용을 추가하고 commit 을 하면 다음과 같이 git 상태가 변하게 됩니다.

  • 우리가 작업한 것은 master work 4 입니다. 
  • ms, google, apple 과 같은 branch 들은 여전히 work 3 버전에 머무르고 있는 것을 볼 수 있습니다. 

  • 이 상태에서 git checkout apple 을 해주게 되면 HEAD 가 apple 을 가리키게 됩니다.
  • HEAD가 apple branch 를 가리키고 있다는 것은 work 3 버전의 상태로 파일이 돌아가게 된다는 것을 의미합니다. 

  • 그래서 우리가 작업하던 메모장을 열어보면 아까 작성했던 master work 4 라는 데이터가 안 보이는 것을 알 수 있습니다. 

  • 이런 식으로 git checkout main 혹은 git checkout apple 을 통해 해당 시대로 되돌아가거나 최신 버전으로 돌아오는 것을 아주 자유롭게 할 수 있는 상태가 됩니다. 

정리하자면!

  • 정리하자면 이런 겁니다. git branch apple 과 같은 방법으로 branch 를 만들 수 있고
  • git branch 를 통해 생성된 branch 들을 볼 수 있으며
  • git checkout apple 을 통해 생성된 branch 로 HEAD 를 옮길 수 있습니다.

브랜치 기본 사용법 2

  • 현재 우리는 apple branch 위에 있는 상태입니다. 

  • 이 상태에서 메모장에 다음과 같이 작성하고 apple.txt 라는 파일로 따로 저장해보겠습니다.

  • 그런 다음, git add . 으로 현재 디렉터리에 있는 모든 파일들을 add 시켜주고
  • git commit -m "apple work 4" 로 commit 을 해 줍니다. 
  • git log --all --oneline --graph 를 해주면 이제 그래프처럼 git log 를 볼 수 있는 것을 확인할 수 있습니다. 
  • 우리의 현재 상태는 apple branch 에 있습니다. 왜냐하면 HEAD 가 apple 을 가리키고 있으니까요. 
  • 그리고 현재 버전은 apple work 4 입니다. 
  • 그럼, apple work 4 라는 버전의 부모는 누구였나요? work 3 였습니다. 
  • 그리고 master work 4 의 부모도 work 3 였습니다. 그것을 그래프로 표현해주고 있는 겁니다. 
  • 이런 텍스트 환경에서 저런 그래프를 만든다는 것은 쉬운 일이 아닙니다. 누군가가 자신의 인생을 갈아 넣은 것이죠.

  • 이제 google 고객사의 요청을 처리해볼까요?
  • git checkout google 로 goolge branch 로 이동합니다.
  • 그러면 HEAD 가 google 로 향하게 됩니다. 

  • google content 4 라는 내용을 저장한 다음에 google.txt 라는 별도의 파일로 저장해줍니다. 

  • git add . 으로 현재 디렉터리에 있는 모든 파일을 Staging Area 로 올려줍니다. 
  • git commit -m "google work 4" 으로 commit 을 해줍니다. 
  • git log --all --oneline --graph 로 git log 를 보면 위와 같습니다. 
  • 현재 우리가 보고 있는 commit version 은 google work 4 이고 해당 버전의 부모 버전은 work 3 였습니다.
  • 또한 work 3 가 부모로 작용하는 다른 버전에는 apple work 4 와 master work 4 가 있다는 것을 알 수 있습니다.
  • 이번에는 ms 를 해봅시다. 

  • 마찬가지로 ms content 4 내용을 추가한 후 ms.txt 파일로 저장합니다. 

  • git add . 로 디렉터리의 모든 파일들을 staging Area 로 올려주고
  • git commit -m "ms work 4" 로 ms work 4 라는 이름으로 commit 을 해줍니다. 
  • git log --all --oneline --graph 를 해보면 위와 같이 HEAD 가 ms 라는 branch 를 바라보고 있고, ms work 4 라는 버전이 현재 상태이며, 해당 버전의 부모는 work 3 라는 것을 알 수 있습니다. 

정리하자면!

  • 여러분 이것이 바로 branch 입니다. 
  • 우리는 branch 를 활용해서 해당 버전으로 순간이동 할 수 있습니다. 
  • 더 이상 필요한 복제본 마다 저장소를 만들어서 복사할 필요 없이 하나의 저장소 안에서 작업을 할 수 있습니다.
  • 공통된 버전을 모두가 공유하면서 필요한 branch 를 만들어서 필요한 작업을 할 수 있습니다. (별도의 평행우주를 만들 수 있습니다)
  • 여러분 정말 축하드립니다. 
 출처 : https://opentutorials.org/course/3840