programing

Git에서 추적되지 않은 파일을 제거하는 방법은 무엇입니까?

javamemo 2023. 7. 9. 09:32
반응형

Git에서 추적되지 않은 파일을 제거하는 방법은 무엇입니까?

저는 "실험적"이라고 하는 제 주요 지점에서 분기하는 지점에서 일하고 있습니다.그런 다음 실험 분기에 사용자 모델을 생성하지만 아직 인덱스에 추가하지 않습니다.

최근에 실험 분기에 추가된 파일의 변경 내용을 모두 취소하려면 어떻게 해야 합니까?추적되지 않은 파일은 다음과 같습니다.

$ git status
 On branch new_chick
 Untracked files:
   (use "git add <file>..." to include in what will be committed)

       .project
       app/models/user.rb
       db/migrate/
       test/fixtures/users.yml
       test/unit/user_test.rb

모든 변경 사항을 취소하기 위해 "git reset --hard"를 실행하려고 했지만 위에 언급된 모든 파일이 여전히 표시됩니다.

추적되지 않은 파일/디렉토리를 제거하려면 다음을 수행합니다.

git clean -fdx

-f - 힘

-d - 디렉터리도

-x - 무시된 파일도 제거합니다(무시된 파일을 제거하지 않으려면 이 옵션을 사용하지 않음).


주의해서 사용하세요!
이러한 명령은 처음에는 생각하지 못했던 임의 파일을 영구적으로 삭제할 수 있습니다.이 답변과 --help 섹션 등 아래에 있는 모든 설명을 다시 확인하고 읽어보시기 바랍니다. 그러면 명령을 미세 조정하고 원하는 결과를 얻을 수 있는 모든 세부 정보를 알 수 있습니다.

사용자 대화형 접근 방식:

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 for 포스
디렉토리의 경우 -d
무시된 파일의 경우 -x(필요한 경우 추가)

참고:-no 또는 --dry-run을 추가하여 기능을 확인합니다.

추적되지 않은 파일 삭제:

git clean -f

추적되지 않은 디렉토리도 삭제하려면 다음을 사용합니다.

git clean -f -d

심장 마비를 예방하려면 다음을 사용합니다.

git clean -n -f -d

추적되지 않은 파일입니다.이것은 깃이 그들을 추적하지 않는다는 것을 의미합니다.Git ignore 파일에 없기 때문에 목록만 표시됩니다.그들이 깃에 의해 추적되지 않기 때문에,git reset그들을 건드리지 않을 것입니다.

추적되지 않은 파일을 모두 삭제하려면 가장 간단한 방법은git clean -f(사용)git clean -n실제로 아무것도 삭제하지 않고 무엇을 파괴하는지 확인하려면).그렇지 않으면 원하지 않는 파일을 수동으로 삭제할 수 있습니다.

다른 방법으로 로컬 repo의 이전 상태로 돌아갈 수도 있습니다.

  1. 추적되지 않은 파일을 준비 영역에 추가합니다.git add.
  2. 로컬 레포의 이전 상태로 돌아가기git reset --hard.

구조 명령은 다음과 같습니다.git clean.

저도 비슷한 문제가 있었습니다.최근에 촬영했지만 특정 파일에 대한 병합이 발생하지 않아 로컬에 변경 사항이 있습니다.그 파일은 추적되지 않았고 저는 그것들을 원하지 않았습니다. 그래서 제가 한 일은 -

git 체크아웃 파일 경로/메시지

filepath - gitbash를 수행한 위치입니다.그리고 제가 가장 최근에 찍었을 때 변화가 가능했습니다.

하는 동안에git clean잘 작동합니다, 저는 여전히 깃레포를 청소하기 위해 제 스크립트를 사용하는 것이 유용하다고 생각합니다, 그것은 몇 가지 이점이 있습니다.

치료할 파일 목록이 표시된 다음 치료 여부를 묻는 대화형 메시지가 표시됩니다.파일당 대화식 프롬프트가 지루해지기 때문에 거의 항상 이 기능을 사용하고 싶습니다.

또한 목록을 수동으로 필터링할 수 있으므로 치료하지 않을 파일 형식이 있을 때(커밋하지 않을 이유가 있을 때) 유용합니다.


git_clean.sh


#!/bin/bash
readarray -t -d '' FILES < <(
    git ls-files -z --other --directory |
        grep --null-data --null -v '.bin$\|Cargo.lock$'
)
if [ "$FILES" = "" ]; then
    echo  "Nothing to clean!"
    exit 0
fi

echo "Dirty files:"
printf '  %s\n' "${FILES[@]}"

DO_REMOVE=0
while true; do
    echo ""
    read -p "Remove ${#FILES[@]} files? [y/n]: " choice
    case "$choice" in
        y|Y )
            DO_REMOVE=1
            break ;;
        n|N )
            echo "Exiting!"
            break ;;
        * ) echo "Invalid input, expected [Y/y/N/n]"
            continue ;;
    esac
done

if [ "$DO_REMOVE" -eq 1 ];then
    echo "Removing!"
    for f in "${FILES[@]}"; do
       rm -rfv "$f"
    done
fi

언급URL : https://stackoverflow.com/questions/8200622/how-to-remove-untracked-files-in-git

반응형