programing

git: 새 파일을 포함한 모든 작업 dir 변경 실행 취소

abcjava 2023. 5. 6. 14:00
반응형

git: 새 파일을 포함한 모든 작업 dir 변경 실행 취소

추적되지 않은 새 파일을 포함하여 작업 디렉터리에서 모든 변경 사항을 삭제하는 방법.나는 그것을 알고 있습니다.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) clean.false로 또는가 지정되지 경우 또는 Git 구성 변수 clean.requireForce가 false로 설정되지 않은 경우 gitclean은 -f, -n 또는 -i가 지정되지 않은 경우 파일 또는 디렉터리 삭제를 거부합니다.두 번째 -f가 제공되지 않는 한 Git는 .git 하위 디렉터리 또는 파일이 있는 디렉터리 삭제를 거부합니다.
  • -d추적되지 않은 파일 외에 추적되지 않은 디렉토리도 제거합니다.추적되지 않은 디렉터리가 다른 Git 리포지토리에서 관리되는 경우 기본적으로 제거되지 않습니다.이러한 디렉터리를 제거하려면 -f 옵션을 두 번 사용합니다.

댓글에 언급된 것처럼, 하는 것이 더 나을 수 있습니다.git clean -nd임시 실행을 수행하고 실제로 삭제하기 전에 삭제할 내용을 알려줍니다.

링크:git clean문서 페이지: https://git-scm.com/docs/git-clean

추적된 모든 단계별 파일에 대해 다음을 사용합니다.

git checkout -- .

.마지막에 중요합니다.

▁you▁can있습수를 대체할 수 있습니다..하위 디렉터리 이름을 사용하여 프로젝트의 특정 하위 디렉터리만 지웁니다.이 문제는 여기서 구체적으로 해결됩니다.

이 작업은 두 단계로 수행할 수 있습니다.

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

명령어를 확인합니다.

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

현재 디렉터리에서 시작하여 버전 제어 하에 있지 않은 파일을 재귀적으로 제거하여 작업 트리를 치료합니다.

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

다음 작업이 가능성:

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

이렇게 하면 준비되지 않은 로컬 변경사항과 준비된 로컬 변경사항이 모두 삭제됩니다.따라서 이러한 명령을 실행하기 전에 보관할 모든 항목을 커밋해야 합니다.

일반적인 사용 사례:많은 파일 또는 디렉터리를 이동한 다음 원래 상태로 되돌리려고 합니다.

학점: https://stackoverflow.com/a/52719/246724

(경고: 다음수행하면 모든 것이 지워집니다)라고 생각했습니다.

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

reset변경 내용을 취소합니다.clean추적되지 않은 파일 및 디렉터리를 제거합니다.

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: ..."로 지정하는 것입니다.그런 다음 대화형 기본 재배치를 사용하여 잘못된 커밋을 제거하고 올바른 커밋을 유지합니다.

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 checkout -- FolderToClean/*

이것은 아마도 무모한 대답일 것입니다. 하지만: 저는 TorothyGit을 창에 사용하고 RETVERT라는 멋진 기능을 가지고 있습니다.따라서 푸시되지 않은 로컬 변경 사항을 되돌리기 위해 수행하는 작업은 다음과 같습니다.

  1. 필요한 폴더의 상황에 맞는 메뉴를 열고 revert를 선택하면 변경된 파일을 revert/revert로 선택할 수 있는 revert 팝업이 표시됩니다.
  2. 추가된 파일(아직 포함되지 않음)도 삭제하려면 커밋(같은 컨텍스트 메뉴에서)을 클릭하면 커밋 팝업이 나타나고 추가된 파일이 표시된 다음 각 파일을 마우스 오른쪽 단추로 클릭하고 삭제를 선택합니다.그러나 커밋하지 않으려면 이 팝업에서 커밋 btn을 누르지 말고 추가된 파일만 보고 여기서 삭제하십시오.

언급URL : https://stackoverflow.com/questions/1090309/git-undo-all-working-dir-changes-including-new-files

반응형