콘텐츠로 건너뛰기
GitTree
Git 가이드3분 읽음

Git 재설정 설명: 소프트, 혼합 및 하드

git reset는 브랜치를 다른 커밋으로 이동합니다. 세 가지 모드는 파일 처리 작업만 다릅니다. 다음은 각 항목이 유지하는 항목, 사용할 항목, 너무 많이 재설정한 경우 다시 돌아가는 방법입니다.

작성자: Kodmora

GitTree 뒤에 있는 소프트웨어 하우스

업데이트됨
  • 실행 취소 및 복구
  • 커밋 기록
  • 커밋
이 페이지에서

세 가지 모드 모두 현재 분기를 사용자가 지정한 커밋으로 이동합니다. `--soft`는 모든 변경 사항을 스테이징된 상태로 유지하고, `--mixed`(기본값)은 이를 작업 폴더에 스테이징되지 않은 상태로 유지하고, `--hard`는 이를 삭제합니다. 마지막 커밋을 실행 취소하고 작업을 유지하려면 git reset --soft HEAD~1을 실행하세요. --hard는 커밋되지 않은 변경 사항을 영구적으로 삭제하므로 확실한 경우에만 사용하세요.

이들부드러운 것, 혼합된 것, 단단한 것의 차이점은 무엇인가요?

각 Git 재설정 모드가 변경하는 사항
방법브랜치 이동대기 장소작업 폴더그것을 사용하여
--soft예유지유지커밋 다시 실행: 모든 것이 단계적으로 유지됩니다.
--mixed예재설정유지커밋할 내용을 언스테이징하고 다시 선택하세요.
--hard예재설정재설정일을 버려라

Git은 작업의 세 가지 복사본(커밋 기록, 준비 영역, 작업 폴더)을 보관합니다. 재설정은 항상 첫 번째로 이동합니다. 모드는 다른 두 개도 다시 쓸지 여부를 결정합니다.

git Reset --soft는 언제 사용해야 합니까?

이를 사용하여 모든 변경 사항을 단계적으로 유지하고 다시 커밋할 수 있도록 준비하면서 커밋을 실행 취소합니다. 브랜치를 하나의 커밋으로 압축하는 가장 빠른 방법입니다.

# undo the last commit, keep the changes staged
git reset --soft HEAD~1

# squash everything since main into one commit
git reset --soft main
git commit -m "feat(search): quick open"

git Reset --mixed는 언제 사용해야 합니까?

기본값이므로 git reset은 git reset --mixed을 의미합니다. 커밋을 취소하고 작업을 다르게 분할하거나 파일을 언스테이징하는 데 사용합니다.

# undo the last two commits, keep the changes unstaged
git reset HEAD~2

# unstage one file (the branch does not move)
git reset src/search.ts

언스테이징의 경우 git restore --staged src/search.ts는 동일한 작업을 수행하고 더 명확하게 읽습니다.

git Reset --hard는 언제 사용해야 합니까?

# drop the last commit and its changes
git reset --hard HEAD~1

# match the remote exactly
git fetch origin
git reset --hard origin/main

브랜치에서 커밋을 어떻게 제거하나요?

커밋을 제거하는 방법
상황명령
푸시되지 않은 마지막 커밋git reset --hard HEAD~1
푸시되지 않은 이전 커밋git rebase -i <sha>~1, 그런 다음 drop로 표시하세요.
커밋이 이미 푸시되었습니다.git revert <sha>
커밋이 잘못된 브랜치로 이동했습니다.git cherry-pick 그런 다음 이전 분기를 재설정합니다.

git revert는 기록을 그대로 유지하므로 공유 분기에서 유일하게 안전한 선택입니다. 푸시된 분기를 재설정하려면 강제 푸시가 필요하며 팀원의 복제본이 손상됩니다. 대화형 리베이스 및 cherry-pick에는 자체 가이드가 있습니다.

Git 재설정을 어떻게 실행 취소합니까?

Reset은 브랜치를 이동시켰고 reflog는 브랜치가 어디에 있었는지 기억합니다.

git reflog
# 3e52f10 HEAD@{0}: reset: moving to HEAD~2
# 9b3c7d1 HEAD@{1}: commit: add search box

git reset --hard 9b3c7d1

그러면 --hard 이후를 포함하여 커밋이 다시 시작됩니다. 스테이징되었지만 커밋되지 않은 파일은 때때로 git fsck --lost-found을 사용하여 찾을 수 있습니다. 단계적으로 진행되지 않은 변경 사항은 사라졌습니다. 재설정, 리베이스 또는 커밋 실행 취소는 모든 경우를 다룹니다.

재설정, 되돌리기 및 복원의 차이점은 무엇입니까?

비슷하게 들리는 세 가지 명령
명령기능역사를 다시 쓴다?
git reset브랜치를 다른 커밋으로 이동합니다.예
git revert다른 커밋을 취소하는 커밋을 추가합니다.아니요
git restore파일을 변경합니다. 분기는 변경하지 않습니다.아니요

GitTree에서 분기를 재설정하는 방법

  1. 커밋을 선택하세요

    브랜치가 돌아가야 하는 커밋을 마우스 오른쪽 버튼으로 클릭하고 Reset … to This Commit을(를) 엽니다.

  2. 모드를 선택하세요

    소프트: 모든 변경 사항을 단계적으로 유지, 혼합: 작업 폴더에 변경 사항 유지 또는 하드: 모든 변경 사항 취소...를 선택합니다.

  3. 필요한 경우 실행 취소

    GitTree는 먼저 refs/ogt/trash의 작업을 저장하므로 실행 취소는 강제 재설정 후에도 다시 가져올 수 있습니다.

GitTree 커밋 메뉴의 소프트, 혼합 및 하드 재설정 모드.
GitTree 커밋 메뉴의 소프트, 혼합 및 하드 재설정 모드.데모 저장소와의 GitTree 인터페이스입니다.

자세한 내용은 브랜치를 커밋으로 재설정을 참조하고, 안전한 저장소에서 연습하려면 모드 재설정 강의를 참조하세요.

자주 묻는 질문

HEAD~1은 무슨 뜻인가요?

현재 단계보다 한 단계 앞선 커밋입니다. HEAD~3은(는) 세 걸음 뒤쳐져 있습니다. git log --oneline은 커밋 이름을 직접 지정하려는 경우 해시를 표시합니다.

git Reset은 커밋을 삭제하나요?

분기를 그들로부터 멀리 이동시켜 git log에 더 이상 나타나지 않게 합니다. 기본적으로 최소 30일 동안 리플로그에 남아 있으며 Git이 이를 제거할 수 있습니다.

마지막 커밋을 취소하고 변경 사항을 유지하려면 어떻게 해야 합니까?

스테이지된 상태로 유지하려면 git reset --soft HEAD~1를 실행하고, 스테이지되지 않은 상태로 유지하려면 git reset HEAD~1를 실행하세요.

git Reset --hard는 안전한가요?

reflog가 다시 가져올 수 있는 커밋된 작업에는 안전합니다. 커밋되지 않은 작업은 삭제되므로 안전하지 않습니다. 확실하지 않은 경우 먼저 숨기거나 커밋하세요.

이미 푸시된 브랜치를 재설정할 수 있나요?

모든 사람을 위해 브랜치를 다시 작성하는 강제 푸시로만 가능합니다. 공유 브랜치에서는 대신 git revert를 사용하세요.

출처

다른 제품에 대한 주장은 2026년 11월 7일의 공식 페이지에서 확인되었습니다. 가격과 기능은 변경됩니다. 공급업체 페이지가 진실의 원천입니다.