2013-07-22 3 views
45

gay repo에서 uncoupled 파일에 대해 많은 관련이없는 변경을했습니다. 각 파일을 개별적으로 검토하고 커밋하고 싶습니다.하나의 파일을 magit과 어떻게 비교할 수 있습니까?

magit-status을 실행하고 변경된 파일 목록을 가져옵니다. 하지만 찾을 수있는 유일한 magit diff 명령 (dD)은 개별 파일이 아닌 전체 리비전을 비교합니다.

git diff <filename>의 출력을 원하지만 magit diff 버퍼에 넣고 싶습니다. 하나의 파일 만 비교하려면 어떻게해야합니까?

+1

무엇입니까? – nephewtom

답변

71

Magit을 사용하면 별도의 diff 버퍼가 필요하지 않고 magit-status 버퍼에서 직접 "각 파일을 개별적으로 검토하고 커밋"할 수 있습니다.

관심있는 파일을 확장하면됩니다 (TAB, 해당 시점의 파일에 대한 diff가 표시됨). s (무단 단계로 u)까지 커밋하고 싶은 부분 (전체 파일 또는 개별 난롯 바, 심지어 표시된 영역)을 스테이지 할 수 있습니다. 해당 커밋과 관련된 모든 변경 사항을 반복하고 필요한 모든 작업이 완료되면 c을 눌러 커밋을 시작합니다.

n.b. 실제로 별도의 버퍼에있는 파일의 diff를 보려면, 해당 파일의 버퍼에 C-xv=을 사용할 수 있습니다. (Emacs에서는 기본 기능이지만 Magit에는 포함되지 않습니다.)

(편집 :. 지금이 시간에 무엇을 의미하는지의 반대를 말하는 것으로 보인다 AAP의 의견의 계정에 다시 답)

+21

나는 TAB에 대해 몰랐다. – Dan

+5

맞아, 그럴 수도 있다고 생각 했어. 그건 당신이 놓치고 있었던 "킬러 애플 리케이션"의 측면입니다. :) 전체 파일, 파일 내의 개별 hunks 또는 표시된 영역을 스테이지 화하거나 스테이지를 해제 할 수 있습니다. 아마도 다른 멋진 기능을 놓치고 있기 때문에 http://magit.github.io/magit/magit.html을 살펴보아야합니다. – phils

+0

나는 치트 시트를 사용하고 있습니다. 나는 "섹션 가시성"명령이 의미하는 것이 무엇인지 몰랐고, 나는 단지's'이 나의 마법 버전에서 작동하지 않는다고 생각했다. – Dan

21

나는 magit의 창조자에 의해 video을 보는 것이 좋습니다. 20 분이며 의도 한대로 작업 흐름을 보여줍니다.

또한 작은 팁 : 을 사용하면 의 현재 제목의 자세한 정보를 변경할 수 있습니다.

또 다른 작은 팁

: 당신은 심술쟁이의 크기에 만족하지 않으면, 당신은에 의해 임의의 지역을 무대 수 있습니다 - 바로의 그 - 지역을 표시하고 을 누르면. 그것은 마술입니다. 나는 잠시 동안이 옵션에 대해 몰랐다. 실제로 나는 콘솔로 돌아가서 git add -p 구식 방식을 사용하여 으로 돌아갔다.

+7

마지막 magit 스크린 캐스트는 4 년 전이었습니다. 커뮤니티로서 Emacs는 스크린 캐스트를 더 많이 받아 들여야합니다. –

1

다른 답변에서 볼 수 있듯이 공구를 사용할 때 곡식에 맞지 않는 것이 분명 장점입니다.

다른 한편으로, 때로는 편집자에게 무엇을해야하는지 알려주고, 인터넷에있는 사람들이 당신이 다른 것을하고 싶다는 말 대신에 당신의 질문에 대답하도록하십시오.

magitM-x magit-file-popup을 통해 현재 파일에 작업을 수행하기위한 메뉴 인터페이스를 제공합니다. 여기에서 눌러야 할 키는 "du"입니다.이 잘 이러한 경우에는과 같이 직접 magit-diff를 호출 할 수 있습니다, 당신을 위해 너무 많은 키 입력을 할 수있다 :

(magit-diff "master" nil (list buffer-file-name))

당신은 당신의 자신의 기능과 이에 대한 키 바인딩을 정의하는 것 같아서. 경우에 당신은 diff의 위치로 이동할 수 있기 때문에

magit-diffvc-diff 이상의 장점이 있습니다. 는 Ediff가 dwimming에 대한`magit-status`에 ** E **를 사용하는 방법에 대한

관련 문제