etc./StackOverFlow

git: 새 파일을 포함하여 모든 작업 디렉토리 변경 사항을 실행 취소합니다.

청렴결백한 만능 재주꾼 2023. 4. 28. 04:06
반응형

질문자 :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


rdtsc

내가 자주 사용하는 가장 안전한 방법:

 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


Heath Dutton

모든 추적 unstaged 파일의 사용 :

 git checkout -- .

. 마지막에 중요합니다.

교체할 수 있습니다 . 프로젝트의 특정 하위 디렉터리만 지우려면 하위 디렉터리 이름을 사용합니다. 문제는 여기에서 구체적으로 다룹니다.


jfountain

git clean 명령을 살펴보십시오.

git-clean - 작업 트리에서 추적되지 않은 파일 제거

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

일반적으로 git에 알려지지 않은 파일만 제거하지만 -x 옵션을 지정하면 무시된 파일도 제거된다. 예를 들어 모든 빌드 제품을 제거하는 데 유용할 수 있습니다.


Greg Hewgill

다음 두 단계로 수행할 수 있습니다.

  1. 수정된 파일 되돌리기: git checkout -f
  2. 추적되지 않은 파일 제거: git clean -fd

Gerard de Visser

다음 작업:

 git add -A . git stash git stash drop stash@{0}

이렇게 하면 단계적 및 단계적 로컬 변경 사항이 모두 삭제됩니다. 따라서 이러한 명령을 실행하기 전에 유지하려는 모든 것을 커밋해야 합니다.

일반적인 사용 사례: 많은 파일이나 디렉터리를 이동한 다음 원래 상태로 돌아가고 싶습니다.

크레딧: https://stackoverflow.com/a/52719/246724


donquixote

나는 그것이라고 생각했습니다 ( 경고 : 다음 모든 것을 지울 것입니다 )

 $ git reset --hard HEAD $ git clean -fd

변경 사항을 취소하려면 reset clean F의 세틸 및 개발 irectories 모든 비 추적을 제거한다.


skube

git reset --hard origin/{branchName}

추적되지 않은 모든 파일을 삭제합니다.


santosh kumar

git clean -i 는 먼저 삭제할 항목을 표시하고 확인 후 진행합니다. 실수로 삭제해서는 안 되는 중요한 파일을 처리할 때 이 기능이 유용합니다.

다른 유용한 옵션을 포함하여 자세한 내용은 git help clean


Taiga

.gitconfig 의 별칭에서 유효한 옵션을 사용할 수 있습니다. 예를 들어:

 [alias] discard = "!f() { git add . && git stash && git stash drop stash@{0}; }; f"

사용법: git discard


Agorreca

다른 해결책은 변경 사항을 커밋한 다음 해당 커밋을 제거하는 것입니다. 이것은 처음에는 즉각적인 이점이 없지만 청크로 커밋하고 백업을 위한 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 lolgit lola 단축키는 이 워크플로에 매우 유용했습니다.


donquixote

내가 사용한 특정 폴더의 경우:

 git checkout -- FolderToClean/*

Glauco Neves

이것은 아마도 멍청한 대답이지만: 저는 Windows용으로 TortoiseGit을 사용하며 REVERT라는 멋진 기능이 있습니다. 따라서 로컬 비 단계적 비 푸시 변경 사항을 되돌리기 위해 수행하는 작업은 다음과 같습니다.

  1. 필요한 폴더에 대한 컨텍스트 메뉴를 불러오고 되돌리기를 선택하면 되돌리기/복구할 변경된 파일을 선택할 수 있는 되돌리기 팝업이 표시됩니다.
  2. 추가된 파일(아직 git에 없음)을 삭제하려면 동일한 컨텍스트 메뉴에서 커밋을 클릭하면 커밋 팝업이 표시되고 추가된 파일이 표시됩니다. 그런 다음 각각을 마우스 오른쪽 버튼으로 클릭하고 삭제를 선택합니다. 그러나 커밋하고 싶지 않기 때문에 이 팝업에서 Commit btn을 누르지 마십시오. 추가된 파일만 보고 여기에서 삭제하십시오.

Oleg Vorontsov

출처 : http:www.stackoverflow.com/questions/1090309/git-undo-all-working-dir-changes-including-new-files

반응형