A sentimental robot

Git Basic - Step.3 본문

Git

Git Basic - Step.3

GOD03219 2019. 4. 14. 20:00

 

rebase

브랜치를 병합하는 merge 이외의 또 다른 방법이다. Rebase를 하든지, Merge를 하든지 최종 결과는 같다. 단지 rebase는 커밋 히스토리를 더 단순하게 만들어 준다.  Rebase의 경우는 브랜치의 변경사항을 순서대로 다른 브랜치에 적용하면서 합치고 Merge의 경우는 두 브랜치의 최종결과만을 가지고 합친다.

하지만 rebase 명령은 주의해야한다. Rebase는 기존의 커밋을 그대로 사용하는 것이 아니라 내용은 같지만 다른 커밋을 새로 만들기 때문이다.

cf. $git rebase A B  A브랜치에 B를 붙힌다.

rebase -i

--interactive의 약자이다. 이 옵션은 커밋들을 합치고 싶을 때 사용한다. 작은 커밋들을 합쳐서 하나의 큰 커밋으로 만든다. rebase를 검색하면 항상 나오는 주의사항이 있다. 원격 저장소에 push 되지 않은 커밋에 대해서만 사용해야 한다라는 내용이다. 동료가 내가 삭제하려고 하는 커밋을 가져와 작업을 하고 있다면, 많은 충돌을 보장할 수 있다!

 

reset & revert

reset 과 revert는 되돌리기의 대표적인 명령어이다. 하지만 둘은 차이점이 있다. reset은 특정한 시점으로 이동뿐만 아니라 저장소의 내역까지 영향을 미친다.

 

reset --hard example1 

example1 이란 커밋으로 돌아가고 그 후의 커밋들까지도 삭제된다. 

reset --soft example1

example1 이란 커밋으로 돌아가고 그 후의 커밋들은 그대로 보존된다. 보존 범위는 staging area (index)까지이며 바로 다시 체크아웃할 수 있는 상태이다. 

reset --mixed example1

example1 이란 커밋으로 돌아가고 그 이후의 커밋들의 unstaged된 상태이다. 그 이후의 커밋으로 돌아가려면 add를 하여 staging area에 올려야한다.

 

reset 명령어는 커밋 내용까지 롤백하기 때문에 이미 원격 저장소에 push된 커밋과 충돌이 날 수 있다. 때문에 로컬 저장소에 한해서만 쓰는 것이 바람직하다. 

 

그렇다면 revert는 무슨 역할을 하나요? 특정 커밋의 내역을 가진 새 커밋을 생성한다. reset과는 달리 커밋 이력을 유지한다. 그렇기 때문에 원격 저장소에 push한 상태라면 git revert 명령을 사용하는 것이 좋다. 

 

cherry-pick

특정 커밋만을 가져오고 싶을 때 쓰는 명령이다. 다른 브랜치에 있는 특정 commit만 반영하고 싶을 때 사용한다.

 

stash (안전한 곳에) 넣어 두다.

커밋하기엔 아직 작업이 끝나지 않았지만 다른 브랜치에 체크아웃해야할 때 쓰이는 명령어이다. tracked 이자 modified 상태인 파일을 보관한다. 이 파일들은 commit하지 않았기 때문에 아직 unstaged 상태이다. 아직 작업이 끝나지 않는 수정 파일을 스택에 잠시 저장한다. git stash list 명령어를 이용하여 스택에 저장되어 있는 파일들을 확인할 수 있다.

git stash save 스택에 저장

git stash pop 가장 마지막으로 저장된 스태쉬 파일 꺼내기, git stash list에서 삭제 된다.

git stash apply 특정 스태쉬 파일 꺼내기, git stash list에서 삭제되지 않는다.

 

squash ;into~ meld into~에 밀어 넣다.

interactive rebase 명령에서 사용 가능한 옵션 중 하나이다. squash한 커밋을 이전의 커밋에 합친다. 

'Git' 카테고리의 다른 글

Git flow strategy  (0) 2019.06.05
Git Basic - Step.2  (0) 2019.04.08
Git Basic - Step.1  (0) 2019.04.08
CLI환경에서 GIT 사용하기  (0) 2018.11.02