Git공부 [6. GIT branch]
🔐 0. git branch?
git branch는 git버전관리의 핵심이다. 말 그대로 해석과 유추가 가능한데 자신이 관리하는 버전의 또 다른 가지(branch)를 뻗는 일이다.
게임을 예로 들자면 지금 현재 개발중인 게임의 가장 최신 버전을 마스터(master) 버전으로 두고 버그 수정내용의 가지를 뻗어 버그를 수정하고 다시 병합하는 과정을 예로 들 수 있다.
++자세한 사항은 git flow확인..
이에 대한 이점은 협업이 아주 쉽게 이루어 진다는 점이고 관리 대상 또한 나눠서 생각 할 수 있게 된다. 추가로 다양한 기능 또한 추가하기 쉬워진다.
여기서 생각해야 하는 점이 있는데 뒤에서 언급 하겠지만 branch는 충돌에 조심해야 한다.
다양한 파일들은 git이 알아서 병합해주지만 같은 파일의 같은 라인을 각자 다르게 수정했다면 충돌이 발생한다.
하지만 git은 충돌이 발생해도 수동으로 수정할 수 있는 기능을 재공해주기 때문에 큰 걱정은 없다.
🔐 1. git branch!
우선 실습을 하기 앞서 미리 개발환경을 조성한다.
하나의 디렉토리를 새로 만들고 그 디렉토리에 git init
즉, 깃 초기화를 진행하여 깃을 사용할 것을 선언한다. 그 후 txt파일을 하나 만들고 3번의 commit을 진행한다.
우리는 git을 이용하여 버전관리를 할때 맨처음 master라는 branch위에서 작업을 시작한다.
git branch
를 입력하면 * master
라고 뜨게 되며 이는 지금 master라는 branch위에 있음을 의미한다.
📕실습
- git branch로 현재 가르키고 있는(속해 있는) 상태 표시
- git branch ‘브랜치 이름’으로 새로운 가지 생성
- 다시 git branch실행하여 추가된거 확인
- git log –oneline으로 추가확인
위 처럼 master위에서 branch를 생성하면 같은 버전을 가진다는 공통점이 있다.
Head가 master를 가르킨 상태에서(master위에서) apple이라는 branch를 생성하였기 때문에 work3라는 같은 버전을 가진다.
여기서 만약 새로운 커밋을 진행한다면 새로운 버전이 생기면서 작성 했던 branch들은 전 버전에 남게 된다.
(ms, google, apple) branch가 남아있는 모습
지금 공부하며 든 생각인데 마치 master는 c언어의 포인터같은 느낌이다…아닌가 좀더 공부하면 나올 듯 싶다.
📕실습
- git checkout ‘apple’으로 다른 브랜치 버전 전환한다.
- git log –all으로 head가 apple을 가리키는 것 확인
- cat work.txt로 파일 내용이 과거로 돌아간 것 확인
- 다시 git checkout master로 다시 돌아감
이 처럼 checkout을 통해 브랜치를 전환하면서 이동이 가능하다.
🔐 2. git branch_심화
만약 checkout으로 다른 branch로 전환 후에 새로운 커밋이나 새로운 파일을 생성한다면 어떻게 될까?
위 사진은 apple branch로 checkout으로 전환 한 뒤 새로운 커밋을 생성한 후 git log –all –graph –oneline을 실행한 모습이다.
여기서 중요하게 봐야 하는 점은 현재 head가 가르키고 있는 apple branch의 apple work4커밋과 master branch의 부모 커밋은 work3라는 점이다.
이제야 뭔가 눈에 보이는 것 같다. –graph로 log를 찍어서 눈에 보이기는 하겠지만..
그럼 실습하며 나머지 branch들도 새로운 커밋을 생성해서 그래프상으로 직접 확인해보자
📕실습
git checkout 'branch'
해당 branch로 전환- git nano를 이용해 새로운 txt파일 및 work.txt파일 수정
- git add . / git commit -m “커밋 메세지”
- git –all –graph –oneline입력 후 그래프 확인
4가지 branch들 모두 뿌리를 work 3에 두고 뻗어나가는 모습이다.
git은 다른 버전이라고 해서 새로 복사하여 다시 만들 필요 없이 하나의 폴더에서 여러버전을 관리하며 직접 눈으로 확인할 수 있다. 예를 들어 평행우주 처럼 ㅋㅋ..
✍️ GIT & 터미널 & 리눅스 용어 정리
- git branch ‘브랜치 이름’: branch를 만들겠다고 선언 ‘브랜치 이름’을 쓰면 그 이름으로 새로운 가지가 만들어짐, ‘브랜치 이름’없이 사용하면 현재까지 만들어진 가지 표시
- git log –all: 지금까지 모든 브랜치를 전부 표사
- git log –graph: 지금까지의 커밋 및 브랜치를 시각화 그래프로 표시
- git log –oneline: 지금까지의 버전을 한줄로 표시
- git checkout: git 시간여행 게시물 복습..
https://opentutorials.org/course/3837 많은 도움을 받은 생활코딩입니다.
공부 정리내용은 생활코딩 및 구글링을 통한 내용을 정리하였습니다.
댓글남기기