[개발] git reset 과 rebase 차이

in upvu •  last year 

안녕하세요 @realmankwon 입니다.

git reset과 git rebase는 Git의 다른 기능을 나타내는 두 개의 명령어입니다. 각각의 목적과 동작은 다음과 같습니다.

git reset: 이 명령어는 커밋을 이동하거나 브랜치를 변경하는 데 사용됩니다. 주로 이전 커밋으로 되돌리는 데 사용됩니다. git reset에는 세 가지 주요 옵션이 있습니다.

--soft: 이 옵션은 HEAD를 특정 커밋으로 이동시키면서 인덱스와 워킹 디렉토리를 변경하지 않습니다. 이전 커밋들의 변경 사항을 스테이징 영역에 남겨둡니다.
--mixed (기본 옵션): 이 옵션은 HEAD를 특정 커밋으로 이동시키면서 인덱스를 변경합니다. 워킹 디렉토리는 변경하지 않습니다. 이전 커밋들의 변경 사항을 언스테이징합니다.
--hard: 이 옵션은 HEAD를 특정 커밋으로 이동시키면서 인덱스와 워킹 디렉토리를 완전히 변경합니다. 이전 커밋들의 변경 사항을 모두 지워버립니다.
git rebase: 이 명령어는 현재 브랜치의 커밋을 다른 브랜치나 커밋에 적용하거나, 커밋들을 재정렬하는 데 사용됩니다. 주로 브랜치를 유지하면서 커밋을 정리하고 합치는 데 사용됩니다.

git rebase는 대상 브랜치에서 커밋을 가져와 현재 브랜치에 적용하는 작업을 수행합니다. 이 작업은 세 가지 단계로 이루어집니다.

기준점(commit base) 결정: 현재 브랜치와 대상 브랜치의 공통 조상을 찾습니다.
패치 적용: 대상 브랜치에서 현재 브랜치로 변경된 커밋을 패치로 가져와 적용합니다.
충돌 해결: 필요한 경우, 충돌이 발생하는 경우 충돌을 해결하고 커밋을 생성합니다.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE BLURT!