본문 바로가기
Git

GIt 명령어 배우기 -1 (commit, branch, checkout, merge, rebase)

by 봄석 2019. 1. 31.

GIt 명령어 배우기

git 명령어 종류

  • commit
  • branch
  • checkout
  • cherry-pick
  • reset
  • revert
  • rebase
  • merge




commit

commit은 git 저장소에 내 디렉터리의 모든 파일에 대한 스냅샷을 기록하는 것입니다.

git은 가능한 커밋을 가볍게 유지하고자 하기 때문에, 커밋할 때마다 디렉토리 전체를 복사하진 않습니다. 각 커밋은 저장소의 이전 버전과 다음 버전의 변경내역("delta"라고함)을 저장합니다.

그래서 대부분의 커밋이 그 커밋 위의 부모 커밋을 가리킵니다 


저장소를 복제(clone)하려면 모든 변경분(delta)를 풀어내야 하는데, 이 때문에 명령행 결과로 아래 문구를 볼수 있습니다 .

resolving deltas


commit은 매우 가볍고 커밋 사이의 전환도 매우 빠릅니다!

- commit명령어 사용하기

git commit



branch

깃의 브랜치도 commit처럼 가볍습니다 .

브랜치는 특정 커밋에 대한 참조(reference)에 지나지 않습니다 .

브랜치를 많이 만들어도 메모리나 디스크 공간에 부담이 되지않기 때문에, 

작업을 커다란 브랜치로 만들기보다 , 작은 단위로 잘게 나누는것이 좋습니다.


브랜치는 나뭇가지처럼 새로운 길을 만드는것입니다!



checkout

checkout명령은 명령 브랜치로 이동합니다 .


- branch와 checkout 명령어 사용하기

//bugFix라는 이름의 브랜치 생성
git branch bugFix
//bugFix 브랜치로 

git checkout bugFix


merge
merge 명령어는 두 별도의 브랜치를 합치는 첫 번째 방법입니다.
새 기능을 개발한 다음  서로 합칠 수 있습니다.

- merge 명령어 사용하기
//bugFix라는 브랜치 생성
git branch bugFix
//생성한 bugFix 브랜치로 이동
git checkout bugFix
//커밋
git commit
 
//원래 있던 master 브랜치로 이동
git checkout master
//커밋
git commit
//master 브랜치에서 bugFix 브랜치와 합치기

git merge bugFix




rebase

rebase명령어는 브랜치 끼리 작업을 합치는 두 번째 방법입니다.

리베이스는 기본적으로 커밋들을 모아서 복사한 뒤 , 다른곳에 떨궈 놓는 것입니다.

리베이스를 하면 커밋들의 흐름을 보기좋게 한 줄로 만들 수 있다는 장점이 있습니다.

리베이스를 사용하면 저장소의 커밋 로그와 이력이 한결 깨긋해 집니다.


l                  git rebase b                          l

l               -------------->>                        l

a     b                                                        b

 a



a라는 브랜치를 b라는 브랜치 위로 직접 옮겨 놓으려고 하면, 실제로는 두 기능을 따로따로 개발했지만 마치 순서대로 개발한것 처럼 보이게합니다. git rebase 명령어로 가능합니다


하지만 위 상태여도 

a의 커밋은 b커밋위에 올라가있지만(이것은 복사본입니다) 

a 커밋은 어딘가에 남아있습니다. 그리고 b도 아직 그대로인 상태입니다.

b라는 브랜치를 선택하고 a브랜치로 rebase 하게되면

b가 a의 부모쪽에 있었기 때문에 단순히 그 브랜치를 더 앞쪽의 커밋을 가리키게 이동하는 것이 전부입니다.



댓글