추적되지 않은 새 파일을 포함하여 작업 디렉토리에서 모든 변경 사항을 삭제하는 방법. git checkout -f
가 그렇게 한다는 것을 알고 있지만 마지막 커밋 이후에 생성된 추적되지 않은 새 파일은 삭제하지 않습니다.
아무도 그렇게하는 방법을 알고 있습니까?
질문자 :Aler
추적되지 않은 새 파일을 포함하여 작업 디렉토리에서 모든 변경 사항을 삭제하는 방법. git checkout -f
가 그렇게 한다는 것을 알고 있지만 마지막 커밋 이후에 생성된 추적되지 않은 새 파일은 삭제하지 않습니다.
아무도 그렇게하는 방법을 알고 있습니까?
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 -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 -nd
이는 테스트 실행을 수행하고 실제로 삭제하기 전에 삭제할 항목을 알려줍니다.
git clean
문서 페이지 링크 : https://git-scm.com/docs/git-clean
모든 추적 unstaged 파일의 사용 :
git checkout -- .
.
마지막에 중요합니다.
교체할 수 있습니다 .
프로젝트의 특정 하위 디렉터리만 지우려면 하위 디렉터리 이름을 사용합니다. 문제는 여기에서 구체적으로 다룹니다.
git clean
명령을 살펴보십시오.
git-clean - 작업 트리에서 추적되지 않은 파일 제거
현재 디렉토리에서 시작하여 버전 제어를 받지 않는 파일을 재귀적으로 제거하여 작업 트리를 정리합니다.
일반적으로 git에 알려지지 않은 파일만 제거하지만 -x 옵션을 지정하면 무시된 파일도 제거된다. 예를 들어 모든 빌드 제품을 제거하는 데 유용할 수 있습니다.
다음 두 단계로 수행할 수 있습니다.
git checkout -f
git clean -fd
다음 작업:
git add -A . git stash git stash drop stash@{0}
이렇게 하면 단계적 및 단계적 로컬 변경 사항이 모두 삭제됩니다. 따라서 이러한 명령을 실행하기 전에 유지하려는 모든 것을 커밋해야 합니다.
일반적인 사용 사례: 많은 파일이나 디렉터리를 이동한 다음 원래 상태로 돌아가고 싶습니다.
나는 그것이라고 생각했습니다 ( 경고 : 다음 은 모든 것을 지울 것입니다 )
$ git reset --hard HEAD $ git clean -fd
변경 사항을 취소하려면 reset
clean
F의 세틸 및 개발 irectories 모든 비 추적을 제거한다.
git reset --hard origin/{branchName}
추적되지 않은 모든 파일을 삭제합니다.
git clean -i
는 먼저 삭제할 항목을 표시하고 확인 후 진행합니다. 실수로 삭제해서는 안 되는 중요한 파일을 처리할 때 이 기능이 유용합니다.
다른 유용한 옵션을 포함하여 자세한 내용은 git help clean
.gitconfig
의 별칭에서 유효한 옵션을 사용할 수 있습니다. 예를 들어:
[alias] discard = "!f() { git add . && git stash && git stash drop stash@{0}; }; f"
사용법: git discard
다른 해결책은 변경 사항을 커밋한 다음 해당 커밋을 제거하는 것입니다. 이것은 처음에는 즉각적인 이점이 없지만 청크로 커밋하고 백업을 위한 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: ..."로 지정하는 것입니다. 그런 다음 대화형 rebase를 사용하여 나쁜 커밋을 제거하고 좋은 커밋을 유지합니다.
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
단축키는 이 워크플로에 매우 유용했습니다.
내가 사용한 특정 폴더의 경우:
git checkout -- FolderToClean/*
이것은 아마도 멍청한 대답이지만: 저는 Windows용으로 TortoiseGit을 사용하며 REVERT라는 멋진 기능이 있습니다. 따라서 로컬 비 단계적 비 푸시 변경 사항을 되돌리기 위해 수행하는 작업은 다음과 같습니다.
출처 : http:www.stackoverflow.com/questions/1090309/git-undo-all-working-dir-changes-including-new-files
"template" 및 "typename" 키워드를 어디에 그리고 왜 넣어야 합니까? (0) | 2023.04.30 |
---|---|
Python에서 여러 줄 주석을 만드는 방법이 있습니까? (0) | 2023.04.28 |
psql에서 데이터베이스를 전환하는 방법은 무엇입니까? (0) | 2023.04.28 |
Python에서 객체가 반복 가능한지 어떻게 확인합니까? (1) | 2023.04.28 |
두 날짜(일수)의 차이를 계산하시겠습니까? (1) | 2023.04.28 |