답변:
git reset --hard # removes staged and working directory changes
## !! be very careful with these !!
## you may end up deleting what you don't want to
## read comments and manual.
git clean -f -d # remove untracked
git clean -f -x -d # CAUTION: as above but removes ignored files like config.
git clean -fxd :/ # CAUTION: as above, but cleans untracked and ignored files through the entire repo (without :/, the operation affects only the current directory)
실제로 삭제하지 않고 미리 삭제되는 내용을 보려면 -n
플래그를 사용하십시오 (기본적으로 테스트 실행). 실제로 삭제할 준비가되면 -n
플래그 를 제거하십시오 .
git clean -nfd
git clean -fxd
무엇을하고 있는지 모른다면 실제로 위험 할 수 있습니다. 데이터베이스 등과 같이 매우 중요한 미 추적 파일을 영구적으로 삭제하게 될 수 있습니다.주의하십시오.
git clean -f -d
너무 무시 폴더에서 파일을 삭제합니다. 따라서 모든 로컬 로그와 그와 같은 것들이 사라질 것입니다. 일반적으로 큰 문제는 아니지만 아는 것이 좋습니다.
가장 자주 사용하는 가장 안전한 방법 :
git clean -fd
/docs/git-clean
페이지 당 구문 설명 :
-f
(별칭 :) --force
. Git 구성 변수 clean.requireForce가 false로 설정되지 않은 경우, git clean은 -f, -n 또는 -i를 지정하지 않으면 파일 또는 디렉토리 삭제를 거부합니다. Git은 두 번째 -f를 지정하지 않으면 .git 하위 디렉토리 또는 파일이있는 디렉토리 삭제를 거부합니다.-d
. 추적되지 않은 파일 외에 추적되지 않은 디렉토리를 제거하십시오. 추적되지 않은 디렉토리가 다른 Git 저장소에 의해 관리되는 경우 기본적으로 제거되지 않습니다. 그러한 디렉토리를 실제로 제거하려면 -f 옵션을 두 번 사용하십시오.주석에서 언급했듯이 git clean -nd
드라이 런을 수행하고 실제로 삭제하기 전에 삭제할 항목을 알려주는 것이 좋습니다.
git clean
문서 페이지 링크 :
https://git-scm.com/docs/git-clean
git clean -nd .
실제로 사용하여 파일을 삭제하기 전에git clean -fd .
add -A
+ commit -a
+를 할 수 있습니다 . 모든 삭제를 검토하는 것은 주요 시나리오에 맞게 확장되지 않습니다. 또한 건식 달리기는 은색 총알이 아닙니다 . 검토 중에 무언가를 놓치 거나 실수를 한 경우 어떻게해야합니까? revert head
git clean
모든 내용은 unstaged 파일을 사용합니다 :
git checkout -- .
.
끝에 중요하다.
.
하위 디렉토리 이름으로 바꾸어 프로젝트의 특정 하위 디렉토리 만 지울 수 있습니다. 이 문제는 특별히 여기에서 해결 됩니다 .
src/app/work/filename.js
및) 이 변경되었습니다 ../app/working/test/filename.js
. git checkout -- .
지점에서 사용 하면 첫 번째 파일 만 선행 ../없이 삭제되었습니다 . 그래서 cd ../
그 명령을 사용하여 두 번째 파일을 삭제하려면 두 번째 위치 디렉토리 로 올라 가야했습니다 .
다음과 같이 작동합니다.
git add -A .
git stash
git stash drop stash@{0}
이렇게하면 비 단계적 및 단계적 로컬 변경 사항이 모두 삭제됩니다. 따라서이 명령을 실행하기 전에 유지하려는 모든 것을 커밋해야합니다.
일반적인 사용 사례 : 많은 파일이나 디렉토리를 이동 한 다음 원래 상태로 되돌리려 고합니다.
git stash drop
있습니까?
git add -A .
) 에 있는지 확인하십시오 . 일치하는 파일이 없었기 때문에 30m을 잃었습니다. 감사!
다른 해결책은 변경 사항을 커밋 한 다음 해당 커밋을 제거하는 것입니다. 처음에는 즉각적인 이점이 없지만 청크를 커밋하고 백업을 위해 git 태그를 만들 수 있습니다.
현재 분기에서 다음과 같이 할 수 있습니다.
git add (-A) .
git commit -m"DISCARD: Temporary local changes"
git tag archive/local-changes-2015-08-01 # optional
git revert HEAD
git reset HEAD^^
또는 분리 된 HEAD에서 할 수 있습니다. (BRANCHNAME 지점에서 시작한다고 가정) :
git checkout --detach HEAD
git add (-A) .
git commit -m"DISCARD: Temporary local changes"
git tag archive/local-changes-2015-08-01 # optional
git checkout BRANCHNAME
그러나, 내가 보통하는 일은 청크로 커밋 한 다음, 커밋의 일부 또는 전부를 "DISCARD : ..."로 명명하는 것입니다. 그런 다음 대화식 리베이스를 사용하여 잘못된 커밋을 제거하고 좋은 커밋을 유지하십시오.
git add -p # Add changes in chunks.
git commit -m"DISCARD: Some temporary changes for debugging"
git add -p # Add more stuff.
git commit -m"Docblock improvements"
git tag archive/local-changes-2015-08-01
git rebase -i (commit id) # rebase on the commit id before the changes.
# Remove the commits that say "DISCARD".
이것은 더 장황하지만, 어떤 변경 사항을 취소 할 것인지 정확하게 검토 할 수 있습니다.
git lol
및git lola
바로 가기이 워크 플로에 매우 도움이되었습니다.
이것은 아마도 멍청한 대답이지만, Windows에는 TortoiseGit을 사용하며 REVERT라는 멋진 기능이 있습니다. 따라서 로컬 비 단계 비 푸시 변경 사항을 되돌리려면 다음을 수행하십시오.
git help reset
및git help clean