Nice programing

git은 커밋되지 않았거나 저장되지 않은 모든 변경 사항을 실행 취소합니다.

nicepro 2020. 9. 29. 18:38
반응형

git은 커밋되지 않았거나 저장되지 않은 모든 변경 사항을 실행 취소합니다.


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


  • 다음으로 스테이징했을 수있는 모든 파일을 언 스테이징합니다 git add.

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

    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) 모든 언 스테이지 파일 (command + a)을 선택하고 마우스 오른쪽 버튼을 클릭 한 다음 제거를 선택합니다.

여기에 이미지 설명 입력

그것은 간단합니다 : D


eclipse 에서 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

내가하는 일은

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

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

참고 URL : https://stackoverflow.com/questions/14075581/git-undo-all-uncommitted-or-unsaved-changes

반응형