2013-06-13 5 views
1

커밋하기 전에 git diff을 사용하여 변경하지 않았 음을 알았습니다. 이 단일 변경 사항을 되돌릴 방법이 있습니까?diff에서 하나의 변경 되돌리기

git add -p을 사용하여 변경하려는 내용을 커밋 한 다음 마스터를 체크 아웃 할 수 있다고 가정합니다. 더 좋은 방법이 있습니까? 가급적이면 저를 커밋 할 필요가없는 방법일까요?

이것은 Kubuntu Linux 12.10의 Git 1.7.10.4와 함께 사용됩니다. 감사!

답변

4

git reset --patch (또는 git reset -p) 원하는대로합니다.

documentation 관련 비트 :

자식 리셋 (--patch | -p)은 [] [-]의 인덱스 사이의 차이 [...]

대화식 선택 심술쟁이을 (기본값은 HEAD). 선택한 헌크는 색인의 역순으로 적용됩니다.

이것은 git reset -p가 git add -p와 반대되는 것을 의미합니다. 즉, hunks를 선택적으로 재설정하는 데 사용할 수 있습니다. --patch 모드를 사용하는 방법은 git-add (1)의 "Interactive Mode"섹션을 참조하십시오.

전 unstages 그들, 그리고 그렇게 git resetgit add가하는 것처럼 같은 --patch 옵션을 지원하면서 (경로에 적용) git resetgit add — 후반부 파일이나 덩어리 일치 않습니다 것을.

git checkout --patch (또는 git checkout -p)에 대해 자세히 알아볼 수도 있습니다.

0

제출할 은색 글 머리 기호가 없지만, 이러한 사용 사례가있는 경우 git gui으로갑니다. 나는 필요한 모든 변경 사항에 대한 색인을 작성한 다음 원하지 않는 변경 사항을 되돌립니다.

git add -p과 동일하지만, git gui은 작업을 정말 깔끔하게 만듭니다.

1

git checkout도 기본적으로 -pgit add과 동일하지만 그 반대입니다.

그냥 수행

git checkout -p <path> 

(당신이 원하는 경우 또는없이 path)

git add -p 당신이 여기에 당신이 되돌릴 변경하는 선택 단계로 변경을 선택할처럼.

+0

그렇지 않습니다.'git checkout -p'는 인덱스를 건드리지 않고 작업 트리의 파일을 업데이트합니다. – kostix

+1

@kostix 예, OP가 요구했던 바로 그 것입니다. – kirelagin

+0

고맙습니다.이 점도 알아두면 좋습니다. – dotancohen