programing

git reset --hard HEAD는 추적되지 않은 파일을 남깁니다.

showcode 2023. 4. 25. 23:45
반응형

git reset --hard HEAD는 추적되지 않은 파일을 남깁니다.

뛰면요git reset --hard HEAD원래대로 되돌리기로 되어 있어요 제가 알기론요안타깝게도 파일이 방치되어 있습니다.git status에는 추적되지 않은 파일의 큰 목록이 표시됩니다.

어떻게 git에 "마지막 당김에 정확히 있던 대로 돌려주세요, 그 이상도 이하도 아닙니다"라고 말할 수 있을까요?

사용하셔야 합니다.git clean -f -d작업 복사본에서 추적되지 않은 파일 및 디렉토리를 제거합니다.추가할 수 있습니다.-x또한 무시된 파일을 제거하려면 이 훌륭한 SO 답변을 참조하십시오.

하위 모듈이 있는 전체 리포지토리를 마스터의 상태로 재설정해야 하는 경우 다음 스크립트를 실행합니다.

git fetch origin master
git checkout --force -B master origin/master
git reset --hard
git clean -fdx
git submodule update --init --recursive --force
git submodule foreach git fetch
git submodule foreach git checkout --force -B master origin/master
git submodule foreach git reset --hard
git submodule foreach git clean -fdx
git reset --hard && git clean -df

또는 zsh는 '그프리스틴' 별칭을 제공합니다.

alias gpristine='git reset --hard && git clean -df'

정말 편리하네요.

선택 사항:

여기도 있습니다.-x에 대한 옵션입니다.git clean명령합니다.그러면 'git ignored' 파일도 삭제되므로 원하는 경우 이 옵션도 추가하십시오.

분기된 repo에서 작업할 경우 다음과 같이 올바른 repo/branch에서 가져오고 재설정해야 합니다.

git fetch upstream && git reset --hard upstream/master && git clean -df

계속 보관할 파일이 있는 경우 다음을 수행합니다.

git clean -di는 더 이상 원하지 않는 파일/파일만 삭제할 수 있는 대화형 정리를 수행합니다.

사용할 수 있습니다.git stash. 지정해야 합니다.--include-untracked그렇지 않으면 원래 문제가 발생합니다.

git stash --include-untracked

그럼 마지막 엔트리는 그냥 저장고에 넣어두세요.

git stash drop

당신은 그것에 대해 핸디 댄디 가명을 만들 수 있습니다, 그리고 그것을 부를 수 있습니다.git discard예를 들어 다음과 같습니다.

git config --global alias.discard "! git stash -q --include-untracked && git stash drop -q"

사용자 대화형 접근 방식:

git clean -i -fd

Remove .classpath [y/N]? N
Remove .gitignore [y/N]? N
Remove .project [y/N]? N
Remove .settings/ [y/N]? N
Remove src/com/amazon/arsdumpgenerator/inspector/ [y/N]? y
Remove src/com/amazon/arsdumpgenerator/manifest/ [y/N]? y
Remove src/com/amazon/arsdumpgenerator/s3/ [y/N]? y
Remove tst/com/amazon/arsdumpgenerator/manifest/ [y/N]? y
Remove tst/com/amazon/arsdumpgenerator/s3/ [y/N]? y

-i는 대화형입니다.
-f는 힘입니다.
-d(디렉토리)입니다.
-x는 무시된 파일의 경우입니다(필요한 경우 추가).

참고:-n 또는 --dry-run을 추가하여 동작을 확인합니다.

git-clean작업 트리에서 추적되지 않은 파일을 제거하는 데 사용합니다.다음은 에 사용할 수 있는 몇 가지 옵션(간단히)입니다.git clean명령합니다.

-d경로를 지정하지 않을 때 사용합니다.그래서 추적되지 않은 디렉토리로 다시 돌아가 그것들을 제거합니다.

-f/--force중첩된 추적되지 않은 파일을 제거합니다.

-i/--interactive수행할 작업을 보여주고 대화식으로 파일을 정리합니다.

-n/--dry-run아무것도 제거하지 않고 어떤 일이 일어날지 보여줍니다.

-x파일을 무시합니다.

예를 들어 다음과 같습니다.git clean -f -d-> 현재 디렉토리에서 추적되지 않은 모든 하위 디렉토리를 제거합니다.

찾으시는 명령은 다음과 같습니다.git clean

이 유용한 별칭을 추가하여 모든 파일을 하드 재설정(추적 및 추적되지 않음)하고 이전 커밋 버전으로 되돌릴 수 있습니다.

git config --global alias.reset-hard '!f() { git reset --hard; git clean -df ; }; f'

그런 다음 다음과 같이 재설정할 수 있습니다.

git reset-hard

Windows에서도 비슷한 문제가 발생하여 PC를 다시 시작하고 관리자 권한으로 SourceTree/GitBash 등을 연 다음 인터페이스에서 파일을 제거해야 했습니다.그런 것 같아요git clean -f -dGitBash 관리자입니다.

소프트 재설정을 수행했을 수 있습니다. 다음을 수행하여 이 문제를 해결할 수 있습니다.

git add .
git reset --hard HEAD~100
git pull

언급URL : https://stackoverflow.com/questions/4327708/git-reset-hard-head-leaves-untracked-files-behind 입니다.

반응형