도망자 상태 창에서 파일 변경을 어떻게 버릴 수 있습니까?


33

를 사용하여 액세스 한 임시 플러그인 상태 창 에서을 사용하여 :Gstatus파일의 변경 사항을 비교 D하고을 사용하여 커밋 할 파일을 토글 할 수 있습니다 -.

변경 사항을 삭제하는 비슷한 지름길이 git checkout -- filename있습니까?

최신 정보:

도망자 github 페이지 에서 기능 요청을 발견했습니다 . 이슈 # 97 : 파일을 체크 아웃 / 제거하는 바로 가기

선호하는 방법은 :Gread :w

업데이트 2 :

2014 년 6 월부터 아래의 Anson이U 답변 한대로 사용할 수 있습니다 .

업데이트 3 : 2019 년 1 월 3 일 이후 키 바인딩이X

답변:


27

이 기능은 2014 년 6 월에 추가되었으며 기본적으로에 매핑되어 U있습니다.

이 정보는 다음의 도움말 파일에 있습니다 :h :Gstatus.

     U     |:Git| checkout HEAD

기능 요청 및 토론 :
https://github.com/tpope/vim-fugitive/issues/97

커밋 :
https://github.com/tpope/vim-fugitive/commit/061a81f247538aeb61e165e1551355f289d52f63


문서화되지 않은 경우 안전하지 않은 것으로 간주 될 수 있습니다. 문서화되지 않은 마법 키 입력으로 인해 로컬 변경 사항을 알아 낸 것이 쉽지 않습니까?
sehe

2
2019 업데이트 해주기 때문이다X
오구 즈 Bilgic

편집 권한이있는 사람이라면 친절하게 X로 편집 하시겠습니까?
chriz

15

당신은 사용할 수 있습니다 도망자 '의 Gread(즉이가 아니라에서, 파일의 버퍼에서 수행해야하는 버퍼의 파일의 여러 다른 버전 버퍼의 내용을 대체하는 명령을 :Gstatus버퍼).

  • :Gread(인수없이) 인덱스 의 파일 버전을 사용합니다 .
  • :Gread - HEAD 커밋에서 파일 버전을 사용합니다.

도망자가 지원 :help fugitive-revision하는 다른 개정 사양 목록 은 위의 설명서를 참조하십시오 (위의 두 가지는 아마도 가장 유용한 것임).

:Gread워크 플로우는 다음과 같이 진행된다 :

  1. :Gread
  2. 도망자 는 현재 버퍼를 지우고 색인에서 내용을 읽습니다.
  3. 결과 : 버퍼의 색인 내용이 동일합니다. 작업 트리 파일은 변경되지 않습니다.
  4. 후속 :w작업으로 파일을 작업 트리에 저장하거나 파일을 :Gread|w즉시 저장하려는 경우 사용할 수 있습니다.

:Git checkout -- %워크 플로우는 다음과 같이 진행된다 :

  1. :Git checkout -- %
  2. Git은 인덱스의 파일 버전을 작업 트리의 파일로 복사합니다.
  3. Vim은 파일이 편집기 외부에서 변경되었음을 확인하고 무시하거나 다시로드하라는 메시지를 표시합니다.
  4. Vim에게 파일을 다시로드하라고 지시합니다.
  5. 결과 : 작업 트리 파일과 버퍼 모두 색인의 컨텐츠를 갖습니다.

요약 : :Gread"편집이 시작된 후 파일이 변경되었습니다"메시지를 피하고 작업 트리에서 파일을 수정할시기를 결정할 수 있습니다.


버퍼가 작업 트리에서 파일 대신 파일의 인덱스 단계를 나타내는 경우, 인덱스 :Gread의 단계 0 대신 작업 트리의 디스크에 존재하는 파일의 내용을 읽습니다.


파일을 되돌릴 gstatus 매핑 :au FileType gitcommit nmap <buffer> U :Git checkout -- <c-r><c-g><cr>
majkinetor

1

파일을 되돌릴 gstatus의 매핑 :

au FileType gitcommit nmap <buffer> U :Git checkout -- <c-r><c-g><cr>

이것은 훌륭하게 작동하지만 단점은 파일이 디스크에서 변경되었다는 대화 상자가 표시되고 다시로드하려는 경우입니다. 침묵한다면 좋을 것입니다.
tidbeck

1
파일이 실제로 되돌려 졌다는 확인을 받으면 IMO가 훨씬 좋습니다. 그러나 '자동 읽기'옵션 ( :help autoread)을 사용 하여 자동 자동 다시로드를 수행 할 수 있습니다 . 다른 당신은 bufdo e위의 내에서 할 수 있습니다 au.
majkinetor

0

글쎄, 당신은 시도 :help fugitive했습니까?

분명히 Git 기능에 대한 지름길은 없습니다.


그래, 내가 했어. 도움이 없었던 기능을 찾지 못한 경우가 있습니다. 프로그램 / 플러그인에 도움이되지 않는 기능에 대해 절대 물어 보지 말아야한다는 의견이 있습니까?
tidbeck

예, 나에게도 일어났습니다 : 내가 할 수 :call있었지만 명령과 관련이없는 기능이있었습니다 . 플러그인 이름이 기억 나지 않습니다… Align? 어쨌든 내 의견은 주변에 묻기 전에 문서를 읽어야한다는 것입니다. 네가 한거야 그래서 멋지다. 그러나 논리적 인 두 번째 단계는 문서를 읽은 후 플러그인 소스를보고 유용한 기능이 있는지 확인하는 IMO입니다. 당신이해야 할 일. 그러나 도망자 AFAIK는 전혀 다루지 git checkout않으므로 기회가 적습니다. 로 돌아 가야 할 수도 :!git checkout -- filename있습니다.
romainl

알겠습니다. 설명해 주셔서 감사합니다. 소스 코드를 살펴 보는 것과 관련하여 올바른 지적을하는 동시에 소스 코드에서만 정보를 사용할 수있는 경우 여기에서 유효한 QA가 될 수 있습니다. 답변을 수락하고 계속 사용하십시오 :Git checkout -- %.
tidbeck

0

vim과는 아무런 관련이 없지만 때때로 내가한다고 말하는 것을 생각했습니다.

$ git status
...
#
#   modified:   .rvmrc
#   modified:   app/views/admin/base/index.html.erb
#   modified:   config/routes.rb
#
...

$ # mouse-copy the files i want to reset, and paste them into the next command

$ cat | xargs git checkout
app/views/admin/base/index.html.erb
config/routes.rb
^D

작업을 빠르게 마무리합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.