질문을 다시 읽으면 작업 트리에있는 변경 사항을 되돌리고 이전에 커밋 된 변경 사항을 취소하려는 것처럼 들리지만 일부 다른 대답은 내 읽기가 잘못 될 수 있음을 나타냅니다. 당신은 명확히 할 수 있습니까? 그런 다음
git add -i <file>
당신이 원하지 않는 변경을 던져 :
변경이 당신의 작업 복사본에 불과 경우는이 작업을 수행하는 가장 쉬운 방법은 당신이하는 유지하려는 변화를 준비하는 것입니다 인덱스 버전을 확인하여 유지 : 당신이 원하지 않는 경우 변경 unstage 그런
git checkout -- <file>
그들을 아직 개최 :
git reset -- <file>
이 제조법은 선택한 변경 사항을 파일 (또는 지정한 파일)로만 되돌리고 되돌리기가 필요한 임시 커밋을 생성하지 않습니다.
git reset <commit_before_first_unwanted_change> -- <file>
는 그런 다음 무대 git add -i <file>
의 이전 조리법을 따를 수 있습니다 : 당신만을 선택적으로 이전 커밋에서 변경의 일부는 다음 먼저 이전 커밋 상태로 파일을 재설정 할 수 있습니다 적용 할 경우
유지하려는 변경 사항 인 git checkout -- <file>
은 원하지 않는 변경 사항을 버리고 git reset -- <file>
은 변경 사항을 '언 스토 지'합니다. 파일이있는 경우
−p, −−patch
Interactively select hunks in the difference between the <tree−ish>
(or the index, if unspecified) and the working tree. The chosen
hunks are then applied in reverse to the working tree (and if a
<tree−ish> was specified, the index).
This means that you can use git checkout −p to selectively discard
edits from your current working tree.
이것은 내가 유지하고 싶은 변경 사항을 저지르는 것입니까? 나는 그 변화를 아직 저지르고 싶지 않다. 아마도 커밋을 너무 진지하게 받아들이고 있습니다. 어쩌면 지금은 모두 지역의 레포에서 휴식을 취해야합니다. btw git 재설정은 무엇입니까? - soft HEAD^do? – Pradeep
"git reset --soft HEAD ^"는 작업 디렉토리와 색인을 그대로 유지하고 현재 분기 중 하나의 커밋을 다시 이동한다는 의미에서 커밋을 취소합니다. –
Thanks Jakub. 파올로가 왜 헤드 - 1로 소프트 리셋해야합니까? 부분적인 커밋과 하드 리셋은 충분해야합니다. 일부 변경 사항을 유지하고 다른 사람을 삭제하는 것이 아닙니까? – Pradeep