팀프로젝트 - Git branch

Seungmin Shin·2021년 9월 14일

어쩌면 가장 중요한 기능

마침 오늘 학원수업이 이것이기도 하고, 생각해보니까 팀프로젝트에 있어서 이것만큼 중요한게 있지 싶다.
혼자서 작업하는게 아니라 팀원들과 코드를 주고받으며 수정하고 추가하고 해야될텐데.
이 과정에서 혹시나 잘못해서 팀원들이 어렵게 작성한 코드를 날리는 불상사가 일어나지 않게 해야되니까
git을 자유자재로 다룰 수 있어야 할 것같다.

다른 코딩 스킬을 익히는것도 중요하지만, 어쩌면 이게 가장 중요한게 아닐까 싶다.
그래서 마침 오늘 공부도 하니까, 다시 복기해보려고 한다.

Git branch

'멀티버스' 의 개념이다. 같은 소스코드를 이용하여 다른 공간을 이용해 작업을 할 수 있게 해주는건데,
팀원간에 작업이 이루어질때, 아니면 내가 좀더 연구해보고 싶은 도전적인 작업이 있을때, 메인이 되는 코드에는
영향을 주지 않고 안전하게 작업을 할 수 있게 해준다, 그뿐만이 아니라, 서로다른 멀티버스에 있던 코드를
불러오는것도 가능하다. 도전적인 실험이 성공해서 메인 코드에 적용하고자 할때, 다른 팀원이 내 코드안에서
더 좋은 방법을 찾았을때, 언제든지 메인코드에 적용이 가능하다. 멀티버스간에 이동도 가능할 뿐더러. 다양하고
안전한 작업을 할 수 있어서 팀프로젝트때 많이 애용될 듯 싶다.

1. Git branch 생성

$ git branch {new branch name}

새로운 브랜치를 만들때 사용하는 명령어다. 우리가 평소에 쓰는 메인 브랜치는 별다른 수정이 없었다면
master 라는 이름을 가지고 있을것이고, 이게 이 코드의 메인 코드가 된다.
그리고 위의 명령어를 가지고 새로운 브랜치를 만든다면 master 브랜치 말고도 다른 브랜치를 가질 수
있게 된다. 멀티버스가 생성되는 것이다, (톰스파의 세계에서 샘스파의 세계가 갈라졌다.)

2. new branch 로 생성 후 바로 전환

$ git switch -c {new branch name} 또는
$ git checkout -b {new branch name}.

브랜치를 생성했다고 끝이 아니다, 브랜치를 사용하기 위해서는 생성한 브랜치로 이동을 해야한다.
이동을하기 위해 필요한 명령어가 위의 명령어이다.

그런데 왜 두개인가? switch 는 무엇이고, checkout은 무엇인가?
나도 이게 궁금해서 좀 찾아보았는데, 간략하게 설명하자면 "버전 업데이트로 인한 새로운명령어 생성" 으로
알면 될것같다, 기존에는 checkout 이 사용되었는데, 이 명령어 자체에 기능이 많다는 이유로
기능을 분기하여 "브랜치간의 이동" 이라는 기능만을 담은 switch 를 제공한것이다.
그러니까 현 시점의 우리는 switch 만을 생각하면 될듯 하다.

그리고, 바로 전환이 아닌 나중에 전환하기도 동일한 명령어에서 -c 만 빼면 된다.

3. branch 목록 확인

$ git branch

생성된 브랜치의 목록을 확인할 수 있다.

4. branch 삭제

$ git branch -d 삭제할 브랜치 이름

브랜치는 생성도 될 뿐더러, 삭제또한 가능하다. 그때 쓰는 명령어다.

상황에 따른 git 명령어 (solo)

1. 레파지토리 클론

김코딩이는 fork한 깃헙 레파지토리를 본인의 local에서 작업하려고 합니다.
복사한 깃헙 리파지토리 주소는 https://github.com/kimcoding/test.git 입니다.

정답: git clone https://github.com/kimcoding/test.git

2. 상태확인

local working directory에서 index.js 파일을 추가했습니다.
기존과 변경된 파일들이 어떤 것이 있는지 확인해 보려고 합니다.

정답: git status

3. staging area 에 추가하기

local 의 index.js 파일을 staging area로 옮기려고 합니다.

정답: git add .

4. 커밋하기

내 깃헙 리파지토리에 'index.js 수정' 이라고 커밋 기록을 남기려고 합니다.

정답: git commit -m "index.js 수정"

5. 커밋이전으로 되돌리기

index.js 파일에서 오타를 발견했어요. 수정을 해야하는데 불필요한 커밋을 또 하고 싶지는 않습니다.
커밋한 기록을 되돌려서 이전으로 돌아갑니다. (* 이전 커밋 id 는 2a4535f 입니다.)

정답: git reset HEAD^ -> 현재커밋을 삭제하여 자동적으로 이전커밋으로 이동한다.

6. push 하기

내 깃헙 origin 리파지토리의 master 로 푸쉬합니다.

정답: git push origin master


상황에 따른 git 명령어 (team)

내 Remote Repository와 연결해서 Remote 상에도 작성한 코드를 적용합니다.
origin이라는 이름으로 내 Remote Repository를 등록하세요. 내 Repository 링크는 https://github.com/kimcoding/test 입니다.

정답: git remote add origin https://github.com/kimcoding/test

페어와 함께 작업을 진행하려고 합니다. 지금까지 master 브랜치에 커밋한 기록을 방금 등록한
origin remote repository에 올려서, 페어에게 코드를 공유합니다.

정답: git push origin master

페어가 내 Remote Repository를 Fork 했다고 합니다. 페어의 Remote Repository를 내 Local
에 pair라는 이름으로 등록합니다. 페어의 리파지토리 링크는 https://github.com/pair/test 입니다.

정답: git remote add pair https://github.com/pair/test

리모트 리파지토리가 잘 연결된 것이 맞는지 확실하지 않다.
연결된 리모트 리파지토리의 목록과 주소들을 확인해 본다.

정답: git remote -v

리모트 연결이 완료되었으니 페어와 나누어서 작업을 진행합니다. 내 commit을 Push하기 전에 페어가
작업해서 본인의 Remote Repository에 올려 놓은 내용을 합치려고 합니다. 페어의 코드를 내 Local로
받아올 수 있을까?

정답: git pull pair main

profile
Frontend Developer

0개의 댓글