git에서 특정 덩어리를 대화식으로 해제하려면 어떻게해야합니까?


106

git에서 동일한 파일의 덩어리가 색인에 준비되어있는 경우 어떻게 그 중 하나를 대화식으로 분리 할 수 ​​있습니까?

전체 파일의 스테이징을 해제 한 다음 유지하려는 덩어리를 다시 스테이징하거나 작업 복사본에 대한 변경 사항을 수동으로 실행 취소 한 다음 이러한 실행 취소 된 변경 사항을 대화식으로 추가하는 대안이 있습니까?

답변:


135

시도 git reset --patch filename; 문서git add --patch 에 따르면 이 작업은 반대의 작업을 수행해야합니다 . 짧은 형식 은 두 명령 모두에서 작동합니다.-p


내 버전에있는 것 같지 않습니다 (1.6.3.3). 정답 인 것 같습니다.
Andrew Grimm 2011 년

2
이 경우 (그리고 어떤 이유로 업그레이드 할 수 없다고 가정)을 사용 git stash save --keep-index하여 현재 작업 복사본 변경 사항을 저장하고 재설정 하는 것이 좋습니다 . 그런 다음 파일을 재설정하고 원하지 않는 변경 사항을 취소 할 수 있습니다. 먼저 파일을 임시 위치에 복사하면를 사용 diff하여 실행 취소 한 변경 사항을 저장할 수 있습니다. 그런 다음 파일을 다시 추가 할 수 있습니다 (관심이 없었던 다른 변경 사항을 숨겨 두었으므로 대화식 추가가 필요 없음). 를 사용하여 git stash pop이전 변경 내용을 다시 얻기 위해, 그리고 diff당신이 취소 한 변경 사항을 적용 할 수 있습니다. 아주 성가신 ... :-(
Aasmund Eldhuset

The short form -p also works for both commands... 무슨 말씀 git reset -p filename이세요?
Nawaz

1
@Nawaz : 맞습니다. git add -p filename해당 파일의 변경 사항을 git reset -p filename선택적으로 스테이징하고 변경 사항을 선택적으로 언 스테이징합니다. 또한 git checkout -p -- filename파일에서 변경 사항을 선택적으로 삭제할 수있는. 경고 : add및 각각을 reset사용하여 두 가지 중 다른 것을 실행 취소 할 수 있지만이 형식을 사용 checkout하여 변경 사항을 취소하면 되돌릴 수 없습니다.
Aasmund Eldhuset

2

git gui덩치 나 라인을 대화식으로 스테이징 또는 언 스테이징 할 수있는 괜찮은 GUI가 있습니다. 더 예쁘고 더 나은 GUI 클라이언트가 있지만 git gui가볍고 내장 된 크로스 플랫폼 (lin, win, mac)입니다.

https://git-scm.com/docs/git-gui

덩어리를 마우스 오른쪽 버튼으로 클릭하여 스테이지 / 언 스테이지 해제합니다. 선의 경우 먼저 선을 강조 표시 한 다음 마우스 오른쪽 버튼을 클릭합니다.


-1

GitX 에는 파일 청크를 언 스테이징하기위한 멋진 UI가 있습니다. 여기에 이미지 설명 입력

공식 클라이언트는 한동안 유지되지 않았지만 GitHub 에서 더 많은 기능을 갖춘 포크 가 일부 서클에서 인기가 있습니다. ( 블로그 게시물 )


1
Windows 사용자를 위해 Git Extensions 는 비슷하게 멋진 UI를 가지고 있습니다.
Aasmund Eldhuset 2011 년

4
그래서 내장 않습니다 git gui나는 확실히 내가 단어 "좋은"를 사용 것 아니에요 제외)
MatrixFrog

1
SourceTree (Windows + Mac)에도 이에 대한 멋진 UI가 있습니다.
chrnola

이제 최신 그래픽 Git 클라이언트에 대해 언급해야합니다. GitKraken 은 아름답고이를 지원합니다 (이제는 상업적 사용에 대해 많은 비용이 들지만 ). GitHub의 GitHub Desktop 은 무료이며 아름답고 쉽게 스테이징 및 언 스테이징을 지원합니다. GitKraken과 GitHub Desktop은 모두 크로스 플랫폼이지만 둘 다 오픈 소스가 아닙니다.
jdgregson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.