Git 명령어 (2)

Vorhandenheit ·2022년 3월 3일
0

Git

목록 보기
3/4

Git 명령어

1. rebase

master에 다른 branch를 병합할 때 쓰이는 방법이 두 가지가 있는데, 하나는 merge이고, 다른 하나는 rebase입니다.

merge는 하나의 브랜치와 다른 브랜치의 변경 이력 전체를 합치는 가장 기본적인 방법입니다.

rebase는 branch 병합 시, main 브랜치가 변경이 됩니다. 이렇게하면 merge commit기록이 남지않아 깔끔합니다.

rebase는 기존의 커밋을 그대로 사용하는게 아니라 내용은 같지만 다른 커밋을 새로 만듭니다. 그렇기 떄문에 master 브랜치에서 다른 브랜치를 기준으로 rebase하는 경우는 피해야합니다.

옵션

  • --continue : 충돌 상태를 해결한 후 계속 작업을 진행
  • --skip : 병합 대상 브랜치의 내용으로 강제 병합을 실행
  • --abort: 명령을 취소

2. squash

코드를 수정할 때 브랜치를 만듭니다. 하지만 커밋 한 번에 수정되는게 아니라 여러 이슈를 수정하기 위해서 여러 커밋이 발생합니다. 이렇게 발생한 커밋을 merge하면 커밋 이력이 많아져, 이력을 추적하는게 힘들어지기 때문에 사용하는게 squash 입니다

정확히 말하면 git rebase를 통해 이전 commit log등을 되돌릴 수 있는데, 이때 squash 옵션을 사용하여 되돌리는 커밋들을 하나의 커밋으로 만들 수 있습니다.

3. revert

reset과 똑같이 이전 커밋으로 되돌린다는 점에서 동일하지만, reset은 이력까지 당시로 되돌린다는 거고 revert는 이력은 그대로두고, 코드만 되돌립니다.

git reset HEAD^ // 현재부터 commit 1개 이전으로 복원합니다.

옵션

  • --soft : 원복된 이력 이후의 내용을 모두 유지
  • --hard : 원복된 이력 이후의 내용을 모두 삭제 후 초기화
  • -merge : 바로 이전 병합 취소
  • --mixed : 원복된 이력 이후의 내용을 모두 유지하지만 인덱스는 초기화 되므로 변경 내용을 다시 추가해야합니다.

4. -amend

최근 커밋 메서지를 수정하고 싶은 경우 사용하면 됩니다.

5. reflag

git의 모든 브랜치에 있었던 기록을 볼 수 있습니다. 각각 HEAD@{index}형태로 가지고 있으니, 해당하는 index를 찾을 수 있습니다.

git reflag // git의 모든 기록을 본뒤, 해당 index를 찾아서
git reset HEAD@{index} //인덱스를 입력하면 이전으로 돌아갑니다.

출처

https://sabarada.tistory.com/196

profile
읽고 기록하고 고민하고 사용하고 개발하자!

0개의 댓글