[git] git는 커밋되지 않은 또는 저장되지 않은 모든 변경 사항을 취소합니다.

마지막 커밋 이후 모든 변경 사항을 취소하려고합니다. 나는 시도 git reset --hard하고 git reset --hard HEAD본 후 이 게시물을 . 나는 head가 18c3773에 있다고 응답하지만 … 내 로컬 소스를 볼 때 모든 파일이 여전히 있습니다. 내가 무엇을 놓치고 있습니까?



답변

  • 이렇게하면 준비한 모든 파일의 준비가 해제됩니다 git add.

    git reset
    
  • 커밋되지 않은 모든 로컬 변경 사항을 되돌립니다 (리포지토리에서 실행해야 함).

    git checkout .
    

    커밋되지 않은 변경 사항을 특정 파일이나 디렉토리로 되돌릴 수도 있습니다.

    git checkout [some_dir|file.txt]
    

    커밋되지 않은 모든 변경 사항을 되 돌리는 또 다른 방법은 유형이 길지만 하위 디렉토리에서 작동합니다.

    git reset --hard HEAD
    
  • 이렇게하면 추적되지 않은 모든 로컬 파일이 제거되므로 git 추적 파일 남습니다.

    git clean -fdx
    

    경고 : !로 -x 지정된 파일을 포함하여 무시 된 모든 파일도 제거합니다 .gitignore. -n삭제할 파일의 미리보기에 사용할 수 있습니다 .


요약하자면, 아래 명령을 실행하는 것은 기본적으로 git clone원래 소스에서 새로 나온 것과 동일 하지만 아무것도 다시 다운로드하지 않으므로 훨씬 빠릅니다.

git reset
git checkout .
git clean -fdx

이를위한 일반적인 사용법은 빌드 스크립트에서, 트리가 완전히 깨끗한 지 확인해야합니다. 수정 또는 로컬로 생성 된 오브젝트 파일 또는 빌드 아티팩트가없고 매우 빠르게 작동하고 재 작업하지 않도록하려는 경우 매번 전체 저장소를 복제하십시오.


답변

커밋되지 않은 모든 변경 사항 을 ” 실행 취소 “하려면 다음을 실행하십시오.

git stash
git stash drop

추적되지 않은 파일이있는 경우 (를 실행하여 확인 git status) 다음 을 실행하여 파일을 제거 할 수 있습니다.

git clean -fdx

git stashstash @ {0} 이 될 새로운 숨김을 작성합니다 . 먼저 확인하려면 git stash list보관함 목록을 확인하기 위해 실행할 수 있습니다 . 다음과 같이 보일 것입니다 :

stash@{0}: WIP on rails-4: 66c8407 remove forem residuals
stash@{1}: WIP on master: 2b8f269 Map qualifications
stash@{2}: WIP on master: 27a7e54 Use non-dynamic finders
stash@{3}: WIP on blogit: c9bd270 some changes

각 숨김은 이전 커밋 메시지의 이름을 따서 명명됩니다.


답변

도 있습니다 git stash 있는 “숨겨 놨다는”로컬 변경 더 이상 필요한 경우 나중에 다시 적용하거나 삭제할 수 있습니다 –

숨김에 대한 추가 정보


답변

소스 트리를 사용하고 있습니다 …. 두 가지 간단한 단계를 통해 커밋되지 않은 모든 변경 사항을 되돌릴 수 있습니다.

1) 작업 공간 파일 상태를 재설정해야합니다.

여기에 이미지 설명을 입력하십시오
2) 모든 unstage 파일 (명령 + a)을 선택하고 마우스 오른쪽 버튼을 클릭 한 다음 제거를 선택하십시오.

여기에 이미지 설명을 입력하십시오

그것은 간단합니다 : D


답변

내가하는 일은

git add . (adding everything)
git stash
git stash drop

짧막 한 농담: git add . && git stash && git stash drop


답변

여기에 도달 git clean -f -d하여 취소 할 수 있는지 검색하는 사람들에게 이클립스 에서 생성 된 파일 에서 이 삭제

“로컬 히스토리에서 복원”을 사용하여 UI에서 동일한 작업을 수행 할 수 있습니다. 로컬 히스토리에서 복원


답변

한 커밋에서 새로운 커밋으로 전환하는 상태

0. last commit,i.e. HEAD commit
1. Working tree changes, file/directory deletion,adding,modification.
2. The changes are staged in index
3. Staged changes are committed

상태 전이를위한 조치

0->1: manual file/directory operation
1->2: git add .
2->3: git commit -m "xxx"

차이점 확인

0->1: git diff
0->2: git diff --cached
0->1, and 0->2: git diff HEAD
last last commit->last commit: git diff HEAD^ HEAD

마지막 커밋으로 되돌리기

2->1: git reset
1->0: git checkout .     #only for tracked files/directories(actions include modifying/deleting tracked files/directories)
1->0: git clean -fdx     #only for untracked files/directories(action includes adding new files/directories)
2->1, and 1->0: git reset --hard HEAD

아무것도 다시 다운로드하지 않고 git clone과 동일

git reset && git checkout . && git clean -fdx