source

커밋된 파일에 .gitignore 적용

factcode 2023. 4. 19. 23:30
반응형

커밋된 파일에 .gitignore 적용

무시하려는 파일을 많이 커밋했습니다.어떻게 git에게 미래의 커밋에서 이 파일들을 무시하라고 말할 수 있을까요?

EDIT: 저장소에서도 삭제합니다.이러한 파일은 빌드 후 또는 사용자별 도구 지원을 위해 작성된 파일입니다.

편집 후.gitignoreignored 파일을 일치시키기 위해git ls-files -ci --exclude-standard제외 목록에 포함된 파일을 보려면 다음을 수행하십시오.

  • Linux/MacOS:git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached
  • Windows(PowerShell): git ls-files -ci --exclude-standard | % { git rm --cached "$_" }
  • Windows (cmd.exe):for /F "tokens=*" %a in ('git ls-files -ci --exclude-standard') do @git rm --cached "%a"

(디스크에서 삭제하지 않고) 저장소에서 삭제합니다.

편집: 이 파일을 .gitconfig 파일에 별칭으로 추가할 수도 있습니다.그러면 언제든지 실행할 수 있습니다.[alias] 섹션 아래에 다음 행을 추가합니다(Windows 또는 Mac에서 필요에 따라 수정).

apply-gitignore = !git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached

(the.-r깃발을 올리다xargs막다git rm빈 결과 실행 및 사용 메시지 출력은 금지되지만 GNU findutils에서만 지원될 수 있습니다.의 다른 버전xargs에는, 같은 옵션이 있는 경우와 없는 경우가 있습니다).

이제 입력만 하면 됩니다.git apply-gitignore네 레포에 저장해두면 효과가 있을 거야!

  1. 편집.gitignore무시하고 싶은 파일에 일치시킵니다.
  2. git rm --cached /path/to/file

다음 항목도 참조하십시오.

파일을 리포에 남겨두지만 이후 변경은 무시하려면:

git update-index --assume-unchanged <file>

이 작업을 취소하려면

git update-index --no-assume-unchanged <file>

어떤 파일이 이렇게 설정되어 있는지 확인하려면:

git ls-files -v|grep '^h'

http://blog.pagebakers.nl/2009/01/29/git-ignoring-changes-in-tracked-files/에 대한 최초 답변에 대한 크레딧

실제 리포는 최신 버전으로 지속적인 변경 없이 진행해야 합니다.

  1. 편집.gitignore원하시는 대로.
  2. git rm -r --cached .(모든 파일 삭제)
  3. git add .(gitignore에 따라 모든 파일 다시 추가)

그 후 평소와 같이 커밋한다.

오래된 질문이지만, 우리 중 몇몇은git-posh(파워셸).이를 위한 솔루션은 다음과 같습니다.

git ls-files -ci --exclude-standard | foreach { git rm --cached $_ }
  1. 파일 이름/파일 경로를 에 추가합니다..gitignore파일.
  2. 이제 git bash에서 명령 실행git rm --cached file/path/from/root/folder
  3. 이제 다음을 사용하여 코드를 커밋합니다.git commit.

이 시점에서 파일은, 다음의 URL 로 추적되지 않게 됩니다.git status명령어를 입력합니다.

나는 이 git 명령어들이 무엇을 하는지 읽기에는 너무 게을러지는 경향이 있다.그래서 이렇게 해요.

  • 무시하고 싶은 모든 파일을 일시적으로 저장소 외부로 이동한다.
  • GIT GUI에서 이러한 "삭제된 파일"을 커밋합니다(추적되지 않음).
  • .gitignore 파일을 업데이트합니다.
  • 파일을 저장소로 되돌린다(또는 삭제한다)

이미 커밋되어 있는 경우는, 다음을 사용할 수 있습니다.

  1. .gitignore 파일에 폴더 경로를 추가합니다.
  2. exe 파일을 제거하려면 이 명령을 실행합니다(다른 파일 확장자의 경우 "*확장자"만 쓰십시오). git rm --cached *exe
  3. 변경을 커밋합니다.

삭제할 모든 내선번호에 대해 이 작업을 수행해야 합니다.

.gitignore 파일을 편집한 후.

git rm -r --cached ./ &&  git add ./ && git commit -a -m "Removing ignored files" && git push

다음의 순서에 따릅니다.

  1. 「」에 합니다.gitignore

  2. 이 명령어 실행

    git rm -r --cached foldername
    
  3. 통상대로 변경을 커밋합니다.

언급URL : https://stackoverflow.com/questions/7527982/applying-gitignore-to-committed-files

반응형