2011-03-04 5 views
75

git에서 인덱스에있는 동일한 파일의 두 덩어리가있는 경우 어떻게 그 중 하나를 대화식으로 제거 할 수 있습니까?어떻게하면 git에서 특정 덩어리를 대화 적으로 무단 해제 할 수 있습니까?

전체 파일을 unstaging 한 다음 유지하려는 헌크를 다시 스테이징하거나 작업 복사본의 변경 사항을 수동으로 실행 취소 한 다음 대화식으로 이러한 실행 취소 변경 사항을 추가 할 수 있습니까? enter image description here

공식 클라이언트 가 한 동안 유지되지 않았지만 더 많은 기능을 가진 a fork over at GitHub 일부 서클 인기 :

답변

97

시도 git reset --patch filename; 이것은 documentation에 따라 git add --patch의 반대를 수행해야합니다. 짧은 형식 -p은 두 명령에 대해서도 작동합니다.

+0

내 버전에는 1.6.3.3이라고 생각하지 않지만 정답과 같습니다. –

+2

그런 경우 (그리고 어떤 이유로 업그레이드 할 수 없다고 가정 할 때),'git stash save --keep-index'를 사용하여 현재 작업 복사본의 변경 사항을 저장하고 재설정하는 것이 좋습니다. 그런 다음 파일을 재설정하고 원하지 않는 변경 사항을 취소 할 수 있습니다. 파일을 임시 위치에 먼저 복사하는 경우'diff'를 사용하여 실행 취소 한 변경 사항을 저장할 수 있습니다. 그런 다음 파일을 다시 추가 할 수 있습니다 (관심이 없었던 다른 변경 사항을 숨기고 나면 대화식 추가 필요 없음). 'git stash pop'을 사용하여 이전 변경 사항을 되돌리고,'diff'는 undid 변경 사항을 적용합니다. 꽤 귀찮은 ... :-( –

1

GitX는 파일의 unstaging 덩어리를 위해 멋진 UI를 가지고있다. (blog post about it)

+1

Windows 사용자의 경우 [Git Extensions] (http://code.google.com/p/gitextensions/)에는 비슷한 UI가 있습니다. –

+3

그럼''nice ''라는 단어를 사용하지 않을 것이라는 것을 제외하고는'git gui'에 내장되어 있습니다;) – MatrixFrog

+1

[SourceTree] (http://www.sourcetreeapp.com/) (Windows + Mac) 또한 이 좋은 UI가 있습니다. – chrnola

관련 문제