답변:
업데이트 (몇 년 후)
인덱스에서만 제거하는 것은 쉽지 않습니다.
사실 : 최근 답변 ( Matt Connolly 작성 )이 제안한 것처럼 파일을 색인 내용으로 쉽게 재설정 할 수 있습니다 .
git reset HEAD^ path/to/file/to/revert
HEAD^
커밋 이전에 자사의 콘텐츠에 액세스 할 수있는 파일 수 있습니다 전에 마지막으로 하나.
git commit --amend
내가 처음에 쓴 것처럼 당신은 할 수 있습니다.
Git 2.23 (2019 년 8 월)에서는 새로운 명령을 사용할 수 있습니다git restore
git restore --source=HEAD^ --staged -- path/to/file/to/revert
더 짧은 :
git restore -s@^ -S -- path/to/file/to/revert
다시 git commit --amend
처음에 쓴 것처럼 다시 할 수 있습니다.
원래 답변 (2011 년 1 월)
이 경우 마지막, 당신은 할 수 커밋 (당신은 어디를 밀어하지 않은 경우) 개정 을 :
(첫번째 은닉 또는 저장 b
)
git commit --amend
그런 다음 b를 삭제하고 다시 커밋하십시오. b를 복원하면 완료됩니다.
--amend
현재 지점의 팁을 수정하는 데 사용됩니다.
평소와 같이 최신 커밋을 바꾸려는 트리 객체를 준비하십시오 (일반적인 -i / -o 및 명시 적 경로 포함). 커밋 로그 편집기에는 현재 브랜치의 끝에서 커밋 메시지가 시드됩니다.
생성 한 커밋은 현재 팁을 대체합니다. 병합 된 경우 현재 팁의 부모를 부모로 갖게됩니다. 따라서 현재 상위 커밋은 삭제됩니다.
git diff --name-only HEAD^
-(선택 사항) 마지막 커밋에서 변경된 파일을 나열하는 데 사용합니다.git reset HEAD^ path/to/file/to/revert
- 작업 복사본을 건드리지 않고 인덱스 를 마지막 버전 으로 재설정합니다 .git commit --amend
- 인덱스 변경 사항 을 포함하도록 마지막 커밋을 수정합니다.git commit -a --amend
3 단계에서 사용하지 않아야합니다 (예 : 파일 추가 안 함). 제거하려는 편집인 작업 사본 변경 사항을 커밋합니다. 선택적인 단계 2.5는 git checkout path/to/file/to/revert
작업 사본도 정리하는 것입니다.
git rm --cached path/to/file/to/revert
트리에서 파일을 삭제하지 않고 파일을 추가 취소 할 수 있습니다.
마지막 커밋에서 b를 삭제하려면
git rm --cached b (will preserve the file in the working tree but remove it from the index)
git commit --amend
마지막 커밋에서 b에 대한 모든 변경 사항을 제거하려면
(backup b)
(modify b to state before incorrect commit)
git commit --amend
(restore b)
git rm --cached
백업 / 복원 댄스 (-1)를 치우십시오.
... Then stash/delete b, re-commit..
, 여기에 단어Then
가 없어야after
합니까? ---amend
stach / 삭제 B 후, ...