팀프로젝트 - Git branch

Seungmin Shin·2021년 9월 14일
1

어쩌면 가장 중요한 기능

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