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

Git에서 마지막 커밋을 수정하는 방법(메시지, 파일, 작성자 및 실행 취소)

커밋 메시지에서 오타를 발견했거나, 파일 준비를 잊어버렸거나, 실수로 비밀을 커밋했거나, 잘못된 작성자 이메일을 사용했든 git commit --amend는 "오타 수정" 커밋으로 브랜치를 복잡하게 하지 않고 팁 커밋을 깔끔하게 대체합니다.

작성자: Kodmora

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

게시됨 업데이트됨
  • 커밋
  • 스테이징
  • 커밋 기록
  • 실행 취소 및 복구
  • 리베이스
이 페이지에서

현재 분기에서 가장 최근 커밋을 수정하려면 git commit --amend을 실행하세요. 아무것도 준비되지 않은 경우 Git은 커밋을 업데이트된 메시지로 바꿉니다. 새로운 변경 사항을 먼저 준비하면 Git은 해당 변경 사항을 커밋으로 접어서 --no-edit을 사용하여 기존 메시지를 유지하거나 제자리에 다시 작성할 수 있습니다. 시각적인 작업 흐름을 선호하시나요? macOS, Windows 및 Linux의 GitTree에서 커밋 패널의 이전 커밋 수정을 켜거나 그래프의 상단 커밋을 마우스 오른쪽 버튼으로 클릭하고 커밋 메시지 편집...을 선택하여 메시지를 미리 채우고, 개별 줄을 스테이지 또는 스테이지 해제하고, 푸시 기록을 다시 쓰기 전에 원격 분기 경고를 확인하고, 원클릭 실행 취소로 언제든지 복구할 수 있습니다.

빠른 참조: 모든 git commit --amend 명령

최신 커밋의 문제점과 일치하는 정확한 명령을 선택하거나 아래의 세부 섹션으로 이동하여 극단적인 사례, 후크, 서명된 커밋 및 시각적 대안을 확인하세요.

Git에서 마지막 커밋을 수정하는 일반적인 방법, 각 명령이 변경하는 내용, 커밋 SHA를 다시 작성하는지 여부.
고치고 싶은 것실행 명령커밋은 어떻게 되나요?
마지막 커밋 메시지의 오타 수정(인라인)git commit --amend -m "New message"HEAD을 새 메시지와 현재 준비된 변경 사항을 전달하는 새 커밋으로 대체합니다.
편집기에서 여러 줄로 된 커밋 메시지 편집git commit --amend기존 제목과 본문이 미리 입력되어 구성된 Git 편집기를 엽니다.
메시지만 다시 말함(스테이징된 파일 무시)git commit --amend --only -m "New message"다음 커밋을 위해 현재 스테이징 영역을 그대로 유지하면서 HEAD의 커밋 메시지를 다시 작성합니다.
잊어버린 파일을 추가하고 동일한 메시지를 유지하세요git add <file> && git commit --amend --no-edit텍스트 편집기를 열지 않고 <file>를 마지막 커밋으로 접습니다.
마지막 커밋에 특정 줄이나 덩어리를 추가하세요.git add -p && git commit --amend --no-edit선택한 덩어리를 대화형으로 스테이지한 다음 해당 덩어리만 HEAD으로 접을 수 있습니다.
수정된 모든 추적 파일을 마지막 커밋으로 접습니다.git commit -a --amend --no-edit수정되거나 삭제된 모든 추적 파일을 스테이지하고 한 단계로 HEAD을(를) 수정합니다(추적되지 않은 파일은 무시됨).
실수로 커밋된 파일 제거(디스크에 보관)git restore --source=HEAD~1 --staged <file> && git commit --amend --no-edit로컬 작업 트리 파일을 그대로 유지하면서 인덱스의 <file>을(를) 다시 HEAD~1로 되돌립니다.
마지막 커밋에서 작성자 이름과 이메일 수정git commit --amend --reset-author --no-edit현재 user.name 및 user.email 구성과 일치하도록 커밋 작성자(및 타임스탬프)를 업데이트합니다.
푸시된 커밋을 수정한 후 브랜치 업데이트git push --force-with-lease --force-if-includes팀원이 새로운 커밋을 푸시하지 않았고 로컬 리플로그에 원격 팁이 포함된 경우에만 원격 브랜치를 안전하게 업데이트합니다.
실수로 발생한 git commit --amend 실행 취소git reset --soft HEAD@{1}추가 변경 사항을 단계적으로 유지하면서 분기 포인터를 수정 전 커밋으로 다시 이동합니다.

git commit --amend가 실제로 내부적으로 수행하는 작업

모든 Git 커밋 해시는 루트 트리 스냅샷, 상위 커밋 해시, 작성자 이름/이메일/타임스탬프, 커미터 이름/이메일/타임스탬프, 커밋 메시지 등 5가지 데이터에서 계산된 암호화 체크섬(SHA-1 또는 SHA-256)입니다. 메시지의 문자 하나만 변경하거나 1초 후에 커미터 타임스탬프를 변경하면 결과 해시가 완전히 달라집니다.

# Before git commit --amend:
A --- B --- C  <-- main (HEAD)

# After git commit --amend:
A --- B --- C' <-- main (HEAD)
       \
        C      (still in git reflog as HEAD@{1} until garbage collection)

git commit --amend을 실행하면 Git은 현재 스테이징 영역(인덱스)에 있는 모든 항목을 가져와서 이를 C(B)의 상위 포인터와 결합하고 새 커밋 객체 C'를 작성하고 현재 분기 참조를 C'를 가리키도록 업데이트합니다. 원본 커밋 C은(는) 즉시 삭제되지 않습니다. 최소 30~90일(gc.reflogExpireUnreachable) 동안 로컬 참조 로그(HEAD@{1})에 기록된 상태로 유지됩니다. 따라서 실수로 수정한 내용은 git reflog 또는 GitTree의 실행 취소 및 다시 실행 및 분실 및 발견 도구를 통해 항상 로컬에서 복구할 수 있습니다.

1. 마지막 커밋 메시지 변경

방금 커밋하고 오타, 잘못된 Jira/GitHub 문제 번호 또는 누락된 Conventional Commits 접두사(feat:, fix:, chore:)를 즉시 발견한 경우 먼저 git status를 확인하여 스테이징된 항목이 있는지 확인하세요.

-m을 사용하여 새로운 한 줄 또는 여러 단락 메시지를 전달합니다.

편집기를 실행하지 않고 터미널에서 직접 메시지를 바꾸려면 -m을 전달하세요. 여러 개의 -m 플래그를 연결하여 제목 줄과 본문 단락을 만들 수 있습니다.

# Replace the commit subject inline
git commit --amend -m "fix(auth): validate refresh token expiry before rotation"

# Replace both the subject line and body paragraph
git commit --amend \
  -m "fix(auth): validate refresh token expiry before rotation" \
  -m "Prevents expired tokens from issuing a new session when clock skew exceeds 30s."

텍스트 편집기에서 기존 메시지를 편집하세요.

커밋에 이미 여러 줄로 된 자세한 설명, 예고편(Co-authored-by:, Signed-off-by:) 또는 다시 입력하고 싶지 않은 발행 참조가 있는 경우 -m 없이 git commit --amend를 실행하세요.

git commit --amend

Git은 현재 커밋 메시지가 미리 로드되어 구성된 core.editor(Vim, Nano, VS Code, Zed 등)을 엽니다. 수정된 커밋을 작성하려면 파일을 저장하고 닫습니다. 편집기가 열려 있는 동안 마음이 바뀌면 전체 커밋 메시지를 삭제하고(파일을 비워두고) 저장하세요. Git은 Aborting commit due to empty commit message을 사용하여 수정 사항을 중단하고 HEAD을 그대로 유지합니다.

2. 마지막 커밋에 잊어버린 파일이나 특정 줄을 추가하세요.

커밋하기 전에 하나의 파일을 저장하거나 테스트 픽스처를 준비하거나 포맷터를 실행하는 것을 잊어버리는 것이 개발자가 --amend에 도달하는 가장 일반적인 이유입니다. 누락된 변경 사항을 먼저 준비한 다음 --no-edit로 수정하여 Git이 편집기를 열지 않고도 기존 커밋 메시지를 유지하도록 합니다.

# Stage the forgotten file (or files)
git add src/auth/token-validator.test.ts

# Fold the staged file into the last commit and keep the existing message
git commit --amend --no-edit

수정하기 전에 특정 줄이나 덩어리만 준비하세요.

작업 트리에 이전 커밋에 속한 3줄의 수정 사항과* 40줄의 디버그 로깅 또는 다음 기능에 대한 작업이 모두 포함되어 있다면 어떻게 될까요? git add . 또는 git commit -a --amend을(를) 실행하지 마세요. 대신, 패치 모드를 사용하여 이전 커밋에 속한 정확한 덩어리나 줄만 스테이징하세요(자세한 내용은 git add -p 및 특정 라인 스테이징 가이드 참조).

# Choose y/n/s (split) for each changed hunk
git add -p src/auth/token-validator.ts

# Verify what is staged vs what stays in the working tree
git diff --staged

# Amend the last commit with only the staged hunks
git commit --amend --no-edit

GitTree에서는 이를 위해 터미널 덩어리 분할(s, e)과 씨름할 필요가 없습니다. Unstaged Changes에서 파일을 클릭하고 정확한 줄을 선택하거나 병렬 또는 인라인 diff에서 Stage Hunk를 클릭하고 Amend Previous Commit을 전환합니다. Git diff 가이드를 확인하여 단계적 diff와 비단계 diff를 검사하여 실수로 인한 코드가 수정된 커밋에 들어가는 것을 방지하는 방법을 알아보세요.

커밋으로 접기 전에 GitTree에서 개별 덩어리와 줄을 준비하여 관련 없는 작업을 준비하지 않은 상태로 유지합니다.
커밋으로 접기 전에 GitTree에서 개별 덩어리와 줄을 준비하여 관련 없는 작업을 준비하지 않은 상태로 유지합니다.데모 저장소와의 GitTree 인터페이스입니다.

3. 실수로 커밋된 파일을 제거합니다(디스크에서 삭제하지 않고).

git add .을 실행하고 실수로 .env.local 파일, 대규모 빌드 아티팩트 또는 별도의 끌어오기 요청에 속하는 파일을 커밋했다고 가정해 보겠습니다. HEAD에서 파일을 제거하는 방법은 파일이 HEAD(HEAD~1) 이전 커밋에 존재했는지 아니면 HEAD에 새로 추가되었는지에 따라 다릅니다.

사례 A: 마지막 커밋에서 새로 추가된 파일 제거(로컬 파일 유지)

디스크에 실제 파일을 남겨두고 스테이징 인덱스에서 파일을 제거하려면 git rm --cached를 사용하고 다음을 수정하세요.

# Remove the file from the index only (leaves the file on disk)
git rm --cached .env.local

# Optional: add it to .gitignore so it never gets staged again
echo ".env.local" >> .gitignore
git add .gitignore

# Rewrite the last commit without .env.local
git commit --amend --no-edit

사례 B: 마지막 커밋에서 추적된 파일에 대한 편집 내용 되돌리기(로컬 편집 내용 유지)

<file>이(가) 이미 HEAD~1에서 추적되었고 실수로 HEAD에 편집 내용이 포함된 경우, git rm --cached을 사용 하지 마세요(이 경우 HEAD에 파일 삭제가 기록됩니다!). 대신, HEAD~1에서 해당 파일에 대한 색인 항목을 복원하십시오.

# Reset only the staged index state of <file> back to HEAD~1
git restore --source=HEAD~1 --staged src/config/database.ts

# Amend HEAD: the commit no longer touches database.ts, and your local edits stay in the working tree
git commit --amend --no-edit

대신 원치 않는 로컬 편집 내용을 삭제하거나 추적되지 않는 파일을 완전히 정리하려면 Git에서 변경 사항을 삭제하고 추적되지 않는 파일을 정리하는 방법 및 Git에서 삭제된 파일을 복원하는 방법을 참조하세요.

4. 마지막 커밋의 작성자, 이메일 또는 타임스탬프를 변경하세요.

user.email을(를) 설정하기 전에 새 노트북에서 커밋하거나 개인 GitHub 이메일이 전체적으로 구성되어 있는 동안 작업 저장소 내부에서 커밋하면 커밋이 잘못된 ID를 기록합니다. git commit --amend는 단일 파일을 건드리지 않고도 커밋의 메타데이터를 다시 작성할 수 있습니다.

# Option 1: Set an explicit author name and email on the last commit
git commit --amend --author="Jane Doe <jane@company.com>" --no-edit

# Option 2: Update git config first, then reset the commit author to match
git config user.name "Jane Doe"
git config user.email "jane@company.com"
git commit --amend --reset-author --no-edit

# Option 3: Amend the author date as well
git commit --amend --date="2026-11-11T14:30:00+02:00" --no-edit

5. 이미 푸시한 커밋을 안전하게 수정하는 방법

이미 origin에 푸시된 커밋을 수정하자마자 로컬 브랜치와 원격 추적 브랜치(origin/<branch>) 분기: 로컬 브랜치에는 C'가 있고 origin에는 여전히 C가 있습니다. 두 커밋 모두 상위 B를 공유합니다.

분기가 자체 기능 또는 풀 요청 분기인 경우 --force-with-lease(그리고 Git 2.30+에서는 --force-if-includes)를 사용하여 원격을 안전하게 업데이트하세요.

# Safely replace the remote branch tip with your amended commit
git push --force-with-lease --force-if-includes origin HEAD
  • `--force` 대신 `--force-with-lease`인 이유: 일반 git push --force는 원격 브랜치를 맹목적으로 덮어쓰며 마지막 가져오기 이후 팀 동료나 CI 봇이 푸시한 모든 커밋을 삭제합니다. --force-with-lease는 origin/<branch>가 여전히 로컬 원격 추적 참조에 저장된 정확한 커밋 SHA를 가리키는지 확인합니다. 그 동안 다른 사람이 푸시하면 Git은 작업 내용을 잃는 대신 푸시를 거부합니다.
  • `--force-if-includes`이 추가하는 내용: 백그라운드 자동 가져오기를 활성화한 경우 푸시하기 전에 원격 추적 참조가 업데이트될 수 있습니다. --force-if-includes는 재작성을 허용하기 전에 원격 브랜치 끝에 있는 커밋이 실제로 로컬 참조 로그에 통합되었는지 확인합니다.
  • When you are on `main` or a shared branch: Do not amend and force-push a shared branch that other developers base their work on. Instead, leave the commit intact and push a new fix commit, or reverse it cleanly with git revert (see our guide to reverting commits and merges and the Recover Pushed Mistakes tutorial).
  • 추적 분기를 먼저 구성해야 합니까? Git에서 업스트림 분기를 설정하는 방법을 참조하세요.

6. 수정해야 할 커밋이 마지막 커밋이 아니면 어떻게 되나요?

git commit --amend는 HEAD(팁 커밋)만 다시 작성합니다. 오타 또는 누락된 변경 사항이 HEAD~2 또는 3개의 커밋에 속하는 경우 수동으로 저장하거나 체리 피킹하지 않고도 두 가지 정리 옵션이 있습니다.

옵션 1: git commit --fixup을 사용한 빠른 CLI 자동 스쿼시

수정 사항을 준비하고 이전 커밋의 SHA를 대상으로 하는 --fixup 커밋(또는 해당 메시지를 편집하려면 --fixup=amend:<sha>)을 생성한 후 git rebase -i --autosquash를 실행합니다.

# 1. Stage the changes meant for the older commit (e.g. a1b2c3d)
git add src/api/client.ts

# 2. Create a fixup commit targeting a1b2c3d
git commit --fixup=a1b2c3d

# 3. Autosquash the fixup commit straight into a1b2c3d
GIT_SEQUENCE_EDITOR=: git rebase -i --autosquash a1b2c3d~1

옵션 2: GitTree의 시각적 대화형 리베이스

SHA를 복사하고 터미널에서 리베이스 할 일 파일을 편집하는 대신 전체 대화형 리베이스 GUI 가이드 및 분기 리베이스 가이드를 읽어보세요. GitTree의 대화형 리베이스 및 리워드, 스쿼시 및 삭제 플래너에서 그래프의 이전 커밋을 마우스 오른쪽 버튼으로 클릭하고 여기에서 인터랙티브 리베이스…를 선택한 다음 해당 커밋을 리워드로 전환하거나 수정 커밋을 수정/스쿼시로 끌어서 클릭 한 번으로 적용합니다.

GitTree의 Interactive Rebase 대화상자에서 이전 커밋을 시각적으로 변경하고, 압축하고, 재정렬합니다.
GitTree의 Interactive Rebase 대화상자에서 이전 커밋을 시각적으로 변경하고, 압축하고, 재정렬합니다.데모 저장소와의 GitTree 인터페이스입니다.

7. 실수로 git 커밋을 취소하는 방법 --amend

의도하지 않은 파일이 준비되는 동안 git commit --amend을 실행했거나 실수로 필요한 커밋 메시지를 덮어썼습니까? Git은 로컬 reflog에 HEAD의 모든 움직임을 기록하기 때문에 사전 수정 커밋은 여전히 ​​HEAD@{1}에 안전하게 보관되어 있습니다.

# 1. Inspect the reflog to see the amend and the commit before it
git reflog -n 5
# e9f8d7c (HEAD -> feature) HEAD@{0}: commit (amend): feat: add billing webhook
# 4a3b2c1 HEAD@{1}: commit: feat: add billing webhook

# 2. Restore the branch to the pre-amend commit and keep any extra changes staged
git reset --soft HEAD@{1}

git reset --soft HEAD@{1}를 사용하면 분기 포인터가 원래 커밋(4a3b2c1)에 바로 다시 배치되고 수정된 커밋과 인덱스에 저장된 원래 커밋 사이의 차이는 그대로 유지됩니다. 작업 트리에서는 아무것도 손실되지 않습니다. soft, mixed 및 hard 재설정 및 참조 로그 복구에 대해 자세히 알아보려면 Git 재설정 --soft 대 --mixed 대 --hard, git 재설정, 리베이스 또는 참조 로그 커밋을 취소하는 방법 및 삭제된 숨김 및 매달린 커밋을 복구하는 방법을 읽어보세요.

git commit --amend를 사용하는 경우와 재설정, 되돌리기 또는 rebase -i를 사용하는 경우

기록을 수정해야 할 때마다 이 결정 매트릭스를 사용하여 커밋 위치와 팀원이 이를 가져왔는지 여부와 일치하는 명령을 선택하세요.

git commit --amend, git Reset --soft, git rebase -i 및 git revert 중에서 선택합니다.
명령타겟 커밋SHA를 다시 작성하시겠습니까?다음과 같은 경우에 가장 잘 사용됩니다.
git commit --amend최신 커밋(HEAD)만예최신 커밋 메시지를 바꾸거나, 잊어버린 스테이징된 변경 사항을 접거나, 로컬 또는 개인 브랜치에서 작성자 메타데이터를 수정하고 싶습니다.
git reset --soft HEAD~1최근 커밋(HEAD)예두 개 이상의 개별 커밋으로 분할할 수 있도록 모든 변경 사항을 단계적으로 유지하면서 HEAD을(를) 완전히 커밋 취소하려고 합니다.
git rebase -i <base>범위 내의 모든 커밋예PR을 병합하기 전에 HEAD보다 오래된 커밋을 편집, 수정, 스쿼시, 수정, 재정렬 또는 삭제해야 합니다.
git revert <sha>모든 커밋(HEAD 이하)아니요(새 커밋 추가)커밋이 이미 main 또는 강제 푸시가 차단되거나 팀원에게 방해가 되는 공유 브랜치에 있습니다.

GitTree의 마지막 커밋을 수정하는 방법(단계별)

  1. 변경사항을 열고 단계적 비교를 검사하세요.

    macOS, Windows 및 Linux의 GitTree 사이드바에서 변경 사항을 엽니다. 마지막 커밋 메시지만 편집하려면 스테이징된 변경을 비워 두세요. 잊어버린 파일이나 특정 줄을 접으려면 병렬 비교에서 해당 파일, 덩어리 또는 줄만 준비하세요.

  2. 이전 커밋 수정 켜기(1)

    커밋 메시지 상자 위에서 이전 커밋 수정을 켭니다(또는 macOS에서 Cmd+Shift+M를 누르거나 Windows 및 Linux에서 Ctrl+Shift+M를 누릅니다). GitTree는 메시지 상자가 비어 있을 때 HEAD의 요약과 설명을 미리 채우고, HEAD이 이미 원격 저장소에 푸시된 경우 GitTree는 기록을 다시 쓰기 전에 명시적인 경고 배너를 표시합니다.

  3. 메시지(또는 AI로 초안)를 다듬고 커밋 수정(2)을 클릭합니다.

    제목 또는 본문을 편집하거나 GitTree Pro에서 스파클 버튼을 클릭하여 Nour 및 자체 코딩 에이전트 CLI(Claude Code, Codex 또는 Gemini CLI)가 전체 수정된 diff에서 업데이트된 커밋 메시지 초안을 작성하도록 한 다음 Amend Commit을 클릭합니다.

  4. 한 번의 클릭으로 실행 취소하거나 강제 푸시(임대 포함)로 안전하게 푸시하세요.

    마음이 바뀌었나요? 상단 툴바(Cmd+Z / Ctrl+Z)에서 실행 취소를 클릭하여 GitTree의 refs/ogt/trash 안전 스냅샷에서 원래의 사전 수정 커밋을 복원하거나 분실물에서 언제든지 이전 커밋을 검사할 수 있습니다. 커밋이 이미 원격 기능 브랜치에 있는 경우 도구 모음에서 Force Push (With Lease)...를 사용하세요.

GitTree의 커밋 양식: (1) 이전 커밋 수정 스위치 및 (2) 커밋 수정 버튼.
GitTree의 커밋 양식: (1) 이전 커밋 수정 스위치 및 (2) 커밋 수정 버튼.데모 저장소와의 GitTree 인터페이스입니다.
GitTree에서 이전 커밋 수정을 켜고, 커밋 요약을 업데이트하고, 한 번의 클릭으로 팁 커밋을 교체합니다.
GitTree에서 이전 커밋 수정을 켜고, 커밋 요약을 업데이트하고, 한 번의 클릭으로 팁 커밋을 교체합니다.데모 저장소와의 GitTree 인터페이스입니다.

GitTree가 모든 일반적인 git 커밋을 제거하는 방법 --수정 실수

대부분의 명령줄 수정 사고는 터미널이 너무 늦을 때까지 세 가지 중요한 컨텍스트 부분, 즉 이미 스테이징 영역에 있는 항목, HEAD이 이미 origin에 푸시되었는지 여부, 덮어쓰기 전의 이전 커밋 SHA가 무엇인지 숨기기 때문에 발생합니다. GitTree는 인터페이스에서 직접 각 실패 모드를 해결합니다.

  • 실시간 단계 대 비단계 비교 검사: 커밋 수정을 클릭하기 전에 스테이징된 변경 사항 목록이 커밋 상자 바로 위에 있으므로 실수로 절반만 완성된 파일을 HEAD로 접는 일이 없습니다. 한 번의 클릭으로 개별 라인, 덩어리 또는 파일을 스테이지하거나 스테이지 해제할 수 있습니다(파일 스테이지, 덩어리 및 라인 스테이지).
  • 푸시 커밋 감지 및 임대 포함 강제 푸시 보호: HEAD이(가) 이미 원격 브랜치에 있는 경우 GitTree는 수정하기 *전에* 커밋 패널 내에서 바로 경고하고 워크플로를 강제 푸시(임대 포함)…와 연결하므로 팀원의 푸시를 덮어쓰지 않습니다.
  • 마우스 오른쪽 버튼으로 단어 바꾸기 및 빠른 `fixup!` / `amend!` 생성: 준비된 파일을 건드리지 않고 HEAD을 다시 단어로 바꾸고 싶으십니까? 커밋 그래프에서 상위 커밋을 마우스 오른쪽 버튼으로 클릭하고 커밋 메시지 편집…을 선택합니다. 오래된 커밋을 수정해야 합니까? 그래프에서 이전 커밋을 마우스 오른쪽 버튼으로 클릭하여 fixup! 또는 amend! 커밋을 생성하거나 대화형 리베이스를 엽니다.
  • 자동 안전 스냅샷(`refs/ogt/trash`) 및 원클릭 실행 취소: 커밋 수정, 대화형 리베이스, 재설정, 분기 삭제 및 삭제를 포함하여 19개의 기록 변경 작업을 실행하기 전에 GitTree는 refs/ogt/trash 아래에 로컬 스냅샷을 기록합니다. 실행 취소(Cmd+Z / Ctrl+Z)를 클릭하면 수정 전 커밋과 스테이징 상태가 즉시 복원됩니다.
  • 시각적 분실물 및 내장 터미널: 내장 터미널 또는 몇 주 전에 수정한 경우에도 분실물은 도달할 수 없는 커밋과 교체된 커밋을 전체 차이점으로 표시하므로 원시 git reflog 출력을 구문 분석하지 않고도 복원, 선별 또는 분기할 수 있습니다.
  • Git Hooks, 비밀 경고 및 AI 커밋 메시지: GitTree는 저장소의 pre-commit 및 commit-msg Git 후크를 실행하고, 실수로 발생한 API 키가 있는지 단계적 비교를 확인하고, (GitTree Pro에서) Nour이 자체 로컬 코딩 에이전트를 사용하여 정확한 커밋 메시지를 생성할 수 있도록 합니다.
커밋을 생성하거나 수정하기 전에 스테이징된 변경 사항을 검사하고 GitTree에서 명확한 커밋 메시지 초안을 작성합니다.
커밋을 생성하거나 수정하기 전에 스테이징된 변경 사항을 검사하고 GitTree에서 명확한 커밋 메시지 초안을 작성합니다.
GitTree 그래프에서 커밋을 마우스 오른쪽 버튼으로 클릭하면 커밋 메시지 편집..., 대화형 리베이스, 재설정, Cherry-Pick 및 되돌리기에 즉시 액세스할 수 있습니다.
GitTree 그래프에서 커밋을 마우스 오른쪽 버튼으로 클릭하면 커밋 메시지 편집..., 대화형 리베이스, 재설정, Cherry-Pick 및 되돌리기에 즉시 액세스할 수 있습니다.
GitTree 도구 모음의 실행 취소 및 다시 실행 버튼은 한 번의 클릭으로 수정된 커밋, 재설정 또는 리베이스를 되돌립니다.
GitTree 도구 모음의 실행 취소 및 다시 실행 버튼은 한 번의 클릭으로 수정된 커밋, 재설정 또는 리베이스를 되돌립니다.데모 저장소와의 GitTree 인터페이스입니다.
GitTree의 Lost & Found 보기에는 수정 전 스냅샷을 시각적으로 복구할 수 있도록 전체 차이점과 함께 매달린 커밋과 교체된 커밋이 나열되어 있습니다.
GitTree의 Lost & Found 보기에는 수정 전 스냅샷을 시각적으로 복구할 수 있도록 전체 차이점과 함께 매달린 커밋과 교체된 커밋이 나열되어 있습니다.

자주 묻는 질문

git commit --amend가 커밋 SHA 해시를 변경합니까?

예. Git 커밋은 변경할 수 없으므로 git commit --amend는 대체 커밋과 동일한 상위 항목을 공유하는 새로운 SHA-1(또는 SHA-256) 해시를 사용하여 새로운 커밋 객체를 생성한 다음 분기 포인터를 새 커밋으로 이동합니다. 교체된 커밋은 Git 가비지 수집이 도달할 수 없는 객체가 만료될 때까지 로컬 git reflog(HEAD@{1})에 유지됩니다.

커밋 메시지를 변경하지 않고 마지막 커밋을 어떻게 수정합니까?

git add <file>(또는 git add -p)을 사용하여 추가 변경 사항을 준비한 후 git commit --amend --no-edit을 실행합니다. --no-edit 플래그는 Git에게 텍스트 편집기를 열지 않고도 HEAD의 기존 커밋 메시지를 재사용하도록 지시합니다. GitTree에서 Amend Previous Commit을 켜면 이전 커밋의 요약과 설명이 자동으로 채워지므로 즉시 Amend Commit을 클릭할 수 있습니다.

이미 다른 파일이 준비되어 있는데 마지막 커밋 메시지만 변경하려면 어떻게 해야 합니까?

git commit --amend --only -m "New commit message"(또는 git commit --amend -o)을 실행합니다. --only 플래그는 Git에게 HEAD에 이미 기록된 파일 트리만 사용하여 HEAD을 수정하도록 지시하고, 현재 준비된 파일은 다음 커밋을 위해 인덱스에 그대로 둡니다. GitTree에서는 그래프의 상위 커밋을 마우스 오른쪽 버튼으로 클릭하고 Edit Commit Message…를 선택할 수도 있습니다.

이미 GitHub, GitLab 또는 Bitbucket에 푸시한 커밋을 수정할 수 있나요?

예, 자체 기능 브랜치인 경우 로컬에서 커밋을 수정한 다음 git push --force-with-lease --force-if-includes(또는 GitTree에서 Force Push(With Lease)... 사용)을 실행하여 Git이 새 커밋을 푸시한 사람이 아무도 없는 경우에만 원격 브랜치를 업데이트합니다. 푸시된 커밋을 수정한 후에는 git pull을 실행하지 말고, main와 같은 공유 브랜치에서 커밋을 수정하지 마세요. 대신 git revert를 사용하세요.

내 컴퓨터에서 파일을 삭제하지 않고 마지막 커밋에서 파일을 제거하려면 어떻게 해야 합니까?

마지막 커밋에서 파일이 새로 추가된 경우 git rm --cached <file>를 실행한 다음 git commit --amend --no-edit을 실행합니다. 파일이 HEAD~1에 이미 있고 HEAD에서 편집한 내용만 제거하려면 git restore --source=HEAD~1 --staged <file>를 실행한 다음 git commit --amend --no-edit를 실행하세요. 두 명령 모두 작업 트리에서 로컬 파일을 그대로 유지합니다.

실수한 경우 git commit --amend를 어떻게 실행 취소하나요?

터미널에서 git reset --soft HEAD@{1}를 실행하세요. 이렇게 하면 새로 추가된 변경 사항을 그대로 유지하면서 수정 직전에 가리키는 정확한 커밋 HEAD으로 분기 포인터가 다시 이동됩니다. GitTree의 경우 도구 모음에서 실행 취소(macOS의 경우 Cmd+Z 또는 Windows 및 Linux의 경우 Ctrl+Z)를 클릭하거나 Lost & Found를 열어 수정 전 커밋을 복원하세요.

git commit --amend는 pre-commit 및 commit-msg 후크를 실행하거나 GPG/SSH 서명을 유지합니까?

예—git commit --amend는 일반 커밋과 마찬가지로 pre-commit 및 commit-msg 후크를 모두 트리거합니다(필요할 때 우회하려면 --no-verify / -n를 전달). 수정하면 새 커밋 개체가 생성되므로 원래 커밋의 GPG 또는 SSH 서명이 대체됩니다. Git 또는 GitTree 환경 설정 > 커밋 서명에서 commit.gpgsign를 활성화한 경우 Git은 수정된 커밋에 자동으로 다시 서명합니다.

과거에 2~3개의 커밋이 있었던 커밋을 수정하려면 어떻게 해야 하나요?

git commit --amend는 HEAD만 수정합니다. CLI에서 이전 커밋을 수정하려면 수정 사항을 준비하고 git commit --fixup=<sha>(또는 --fixup=amend:<sha>)를 실행한 후 git rebase -i --autosquash <sha>~1를 실행하세요. GitTree의 커밋 그래프에서 이전 커밋을 마우스 오른쪽 버튼으로 클릭하고 여기에서 대화형 리베이스…를 선택하여 시각적으로 다시 작성하거나 편집하거나 스쿼시합니다.

출처

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