Git은 브랜치별로 소스를 관리하기 편하다.

개발하려는 기능을 새로운 브랜치를 만들어 작업한 후, 작업이 완료되면 master로 통합해주는 방식으로 많이 활용된다.

 

아래는 쉘에서 사용 가능한 브랜치 관련 git 명령어들이다.

 

1. 브랜치 생성

git branch 명령으로, test라는 브랜치를 만든다

$ git branch test

 

2. 브랜치 이동

git checkout 명령으로 test라는 브랜치로 이동한다.

$ git checkout test

 

3. 브랜치 이름 변경

로컬 저장소의 브랜치 이름 변경

$ git branch -m [old_branch] [new_branch]

 

test라는 브랜치의 이름을, new_test로 변경하는 예는 다음과 같다.

(브랜치 명령어는 브랜치만 생성하기 때문에, 작업을 하려면 checkout을 해야 한다.)

$ git branch -m test new_test
$ git checkout new_test

 

원격 저장소의 브랜치 이름 변경

원격 저장소의 old_branch를 삭제하고, new_branch를 push 해주면 된다. 아래의 명령어로 한번에 할 수 있다.

$ git push origin :[old_branch] [new_branch]

 

원격 저장소의 test라는 브랜치를 new_test라는 브랜치명으로 바꾸는 예는 다음과 같다.

$ git push origin :test new_test

 

4. 브랜치 합치기

두 브랜치를 합치는 방법으로는, Merge와 Rebase가 있다.

양자는 최종 결과물은 같고, 커밋 히스토리만 다르다.

Rebase 는 브랜치의 변경사항을 순서대로 다른 브랜치에 적용하면서 합치고,

Merge는 두 브랜치의 최종 결과만을 가지고 합친다.

 

브랜치 Merge

git merge 명령으로, test 브랜치를 master 브랜치에 합친다.

$ git checkout master
$ git merge test

 

브랜치 Rebase

rebase를 통해 test 브랜치를 master에 합치는 예는 다음과 같다.

$ git checkout test
$ git rebase master
$ git checkout master
$ git merge test

Rebase시 주의! 

이미 공개 저장소에 Push한 커밋을 Rebase 해서 다시 push 하지 마라.

Rebase는 기존의 커밋을 그대로 사용하는 것이 아니라 내용은 같지만 다른 커밋을 새로 만든다.

따라서 이미 공개 저장소에 c1이라는 커밋을 push 해서 다른 사람이 그 커밋을 바탕으로 작업을 했는데, 해당 커밋 c1을 rebase로 다시 push 해버리면, 동료는 rebase 내용을 pull 했을 때 본인의 코드와 충돌이 일어나게 된다.

그래서인지, rebase는 로컬작업에서만 사용하라고 권장하는 사람들도 있다.

 

합친 브랜치 master를 원격 저장소에 push하기

$ git push origin master

 

5. 브랜치 삭제

merge 후 필요 없어진 브랜치는 삭제한다.

$ git branch -d [branch_name]

 

아래는 test라는 브랜치를 삭제하는 예이다.

$ git branch -d test

1. clone

원격 저장소를 내 컴퓨터에 복제한다. (폴더명을 입력해주면, 폴더가 생성되며 그 안으로 원격 저장소가 복제된다.)

git clone [클론할 git repository 주소] [폴더명]

 

2. checkout

특정 브랜치를 가져온다.

git checkout [브랜치명]

 

3. username과 email 설정

커밋을 하려면 내가 누구인지를 설정해 주어야 한다. (그래야 누가 커밋했는지 알 수 있음)

--global : 모든 프로젝트에 이 계정을 적용

git config --global user.name "Your Name"
git config --global user.email you@example.com

 

4. add

생성한 파일을 git 인덱스에 추가한다. (커밋을 위한 준비)

git add "생성한 파일명"

 

5. commit

인덱스에 추가된 파일을 로컬 저장소에 커밋한다.

git commit -m "커밋 메시지"

 

6. push.default 설정

push의 기본동작을 matching과 simple 중에 선택할 수 있다.

1) matching : 전체 브랜치 push

git config --global push.default matching

 

2) simple : 현재 브랜치만 push

git config --global push.default simple

 

7. push

로컬 커밋 내용을 원격 저장소에 반영한다.

1) master 브랜치에 push하는 경우

git push origin master

2) 이미 브랜치가 설정되어 있다면, git push만 해도 된다.

git push

 

+ Recent posts