programing

git 저장소에서 병합한 후 .orig 파일을 삭제하는 방법은 무엇입니까?

sourcejob 2023. 7. 13. 20:49
반응형

git 저장소에서 병합한 후 .orig 파일을 삭제하는 방법은 무엇입니까?

어떤 식으로든 .orig 파일은 병합 중에 내 git 저장소에서 확인되며, 이제 수정된 섹터와 추적되지 않은 섹터에 표시됩니다.그러나 이 파일을 더 이상 저장소에 저장하지 않습니다.어떻게 하는 거지?

    modified:   Gemfile.lock.orig
    #   modified:   Gemfile.orig
    #   modified:   app/assets/images/bg_required.png.orig
    #   modified:   app/assets/javascripts/application.js.orig
    
    etc...

어떤 도움이라도 주시면 감사하겠습니다.

이 경우 가장 좋은 해결책은 단순성을 유지하고 git와 독립적으로 이러한 파일을 제거하는 것입니다.

cd /your/repo/directory
find . -name '*.orig' -delete 

또는 Windows/PowerShell에서 다음 명령을 실행할 수 있습니다.

cd \your\repo\directory
Get-ChildItem -Recurse -Filter '*.orig' | Remove-Item

해라git clean여기 또는 여기에서 찾을 수 있는 더 많은 정보

할 수 있는 일:

git config --global mergetool.keepBackup false

자세한 내용은 Gitmerge 도구에서 원하지 않는 .orig 파일 생성을 참조하십시오.

불행하게도git clean내겐 안 통해 왜냐면 난.*.orig글로벌 gitignore 파일에 추가되어 치료에서도 무시됩니다.이븐런닝git clean -x무시한 파일이 모두 삭제되는 것을 원하지 않기 때문에 좋지 않습니다. git clean -i도움이 되지만, 정말로 모든 파일을 검토할 필요는 없습니다.

그러나 제외 패턴을 사용하여 일치를 무효화할 수 있습니다.다음 명령으로 미리 보기:

git clean -e '!*.orig' --dry-run

그러면 자신이 있을 때, 다음을 통과합니다.force플래그를 지정하여 삭제합니다.

git clean -e '!*.orig' -f

leorleor의 코멘트에 근거함

.gitignore를 사용하여 파일을 무시할 수 있습니다.

여기에 표시된 것처럼 목록에 *.orig를 입력합니다.

https://help.github.com/articles/ignoring-files

현재 파일을 삭제하기 위해 셸 스크립트를 만들고 아래와 같은 프로젝트 폴더에서 실행할 수 있습니다.

for file in `find *.orig -type f -print`
do
   echo "Deleting file $file"
   git rm $file -f       
done

git rm Gemfile.lock.orig필요 없는 나머지 파일들도 있습니다. git commit --amend

그 얼룩들을 완전히 제거하기 위해,git gc --prune=0 --aggressive

나를 위해.git clean -f모든 *.oig 파일을 제거했습니다.그리고 이전에 이미 있던 것들을 유지합니다.

병합 후의 모습은 다음과 같습니다.

$ git status
On branch feature/xyz
Your branch is ahead of 'origin/feature/xyz' by 568 commits.
  (use "git push" to publish your local commits)

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

    .idea/codeStyles/
    .idea/misc.xml.orig

.idea/codeStyles/병합 전에 추적되지 않은 파일로 이미 존재했습니다. .idea/misc.xml.orig(그리고 더 많은 것들이) 제거되어야 했습니다.

=> 사용하기git clean -f:

$ git clean -f
Removing .idea/misc.xml.orig

결과:

$ git status
On branch feature/xyz
Your branch is ahead of 'origin/feature/xyz' by 568 commits.
  (use "git push" to publish your local commits)

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

    .idea/codeStyles/

당신은 간단히 할 수 있습니다.git status -s | grep "\.orig$" | awk '{print $2}' | xargs -n1 -r echo rm

TL;DR;

git status -s인덱스와 관련하여 수정/수정된 모든 파일을 가져올 수 있습니다.

grep "\.orig$"파일을 필터링하여 끝을 ".orig"로 유지합니다.

awk '{print $2}'파일 이름을 나열합니다(예: A, M, ??).

xargs -n1 -r echo rm모든 인수에 대해 제거 명령을 출력합니다(-n1: 한 번에 하나씩, -r: 비어 있을 때 건너뛰기). 제거할 파일을 다시 확인하기 위해 명령을 복사하고 복사합니다.

사전 커밋 후크를 사용하여 이 프로세스를 자동화할 수 있습니다.이렇게 하려면 프로젝트 폴더 안으로 들어가서 숨겨진 폴더를 검색하면 됩니다..git그 안에서 당신은 발견할 것입니다.hooks을 cr8로 합니다.pre-commit다음 내용과 함께:

echo "Looking for .orig files to remove"
pwd=$(pwd)
find . -name '*.orig' -delete 
echo "Done removing .orig files"

이제 사용자가 무언가를 커밋하기 전에 항상 오리진 파일을 정리하므로 무시한 채로 유지할 필요가 없습니다.

윈도우즈 시스템에 있는 사용자는 PowerShell에서 이 명령을 실행할 수 있습니다.

ls -r *.orig | rm -f

또는 자세한 PowerShell을 선호하는 경우

Get-ChildItem -Recurse *.orig | Remove-Item -Force

git rm <file>

http://git-scm.com/docs/git-rm

또한 무시할 파일/디렉토리를 .gitignore 파일에 추가합니다.

언급URL : https://stackoverflow.com/questions/12366150/how-to-delete-orig-files-after-merge-from-git-repository

반응형