2013-04-23 4 views
13

Git에서 변경 (실행 취소 및 무단 변경)을 취소하는 가장 빠른 방법은 무엇입니까?git에서 스테이지 및 unstaged 변경 사항을 신속하게 실행 취소하는 방법은 무엇입니까?

두 파일을 모두 unstaged.

$ git status -s 
M file1.txt # unstaged 
?? oops.txt # unstaged 

하나의 파일이 스테이징되고 하나의 파일이 스테이징됩니다.

$ git status -s 
M file1.txt # staged 
?? oops.txt # unstaged 

내가 할 수 add 인덱스에 대한 모든 다음 stashsavedrop.

$ git add . 
$ git stash save 
$ git stash drop 
$ git status 
nothing to commit, working directory clean 

더 빠른 방법이 있습니까?

답변

23

git reset --hardgit clean -fd의 두 명령을 사용해야합니다. git reset --hard은 모든 단계별 변경 사항을 취소하고 git reset -fd 단계의 변경 사항 (파일 및 디렉터리)을 취소합니다. 두 명령을 수행 할 별칭을 만들 수 있습니다. 이를 위해, 당신의 .gitconfig에 다음 줄을 추가

[alias] 
    undo = '!git reset --hard && git clean -fd' 
+2

별칭'undo =! '를 추가했습니다. git reset --hard && git clean -f "' – hIpPy

+2

nice ... 그리고 어디에서 쾅 나오는 지 궁금하게 생각하는 경우 : http://stackoverflow.com/questions/10641451/ what-of-the-a-the-bang-of-the-git-command – Calaf

+1

이 대답은 잘못된 용어를 사용합니다. 'git reset --hard' **는 모든 변경 사항을 버리고 색인에 포함되어 작업 트리에서 무단 처리됩니다 **. 'git clean -fd'는 추적되지 않는 ** 모든 파일과 디렉토리를 제거합니다 **. 예를 들어'.o' 파일과 같이 로컬로 빌드 된 것, configure 스크립트의'config.make','tags' 등이 있습니다. – Kaz

5

당신은 git clean

 
$ git status -s 
?? oops.txt 

$ git clean -f 
Removing oops.txt 

$ git status -s 

더 많은 정보를 사용할 수 있습니다

재귀 적으로 현재 디렉토리에서 시작, 버전 관리하지 않는 파일을 제거하여 작업 트리를 정리합니다.

+2

'git reset --hard'와'git clean -f'를 모두해야합니다. – hIpPy

13
git reset HEAD 
git checkout . 

git reset HEAD 모든 변경과`자식 체크 아웃을 unstage 것이다 '. 모든 변경 사항을 삭제합니다.

관련 문제