이미 많은 수의 파일을 추적하고 있는 기존 리포지토리에 .gitignore 적용
저장소에 기존 Visual Studio 프로젝트가 있습니다.저는 최근에 제 프로젝트 아래에 .gitignore 파일을 추가했는데 Git에게 파일에 나열된 파일을 무시하라고 말하는 것 같습니다.
제 문제는 그 모든 파일들이 이미 추적되고 있다는 것이고 제가 아는 한 Git는 이 파일에 무시하기 위해 규칙이 추가되기 전에 이미 추적된 파일을 무시하지 않을 것입니다.
다음을 사용하도록 제안되었습니다.git rm --cached
수동으로 추적을 해제하지만 하나씩 확인하는 데는 시간이 오래 걸릴 것입니다.
저장소를 삭제하고 다시 만들까 생각했는데 이번에는 .gitignore 파일이 있는 상태에서 더 나은 방법이 있을 것입니다.
이 대답은 제 문제를 해결했습니다.
우선 보류 중인 모든 변경 사항을 커밋합니다.
그런 다음 다음 명령을 실행합니다.
git rm -r --cached .
이렇게 하면 인덱스에서 모든 항목이 제거되고 다음을 실행합니다.
git add .
커밋:
git commit -m ".gitignore is now working"
이 파일을 리포지토리에 밀어넣고 다른 곳에서 해당 파일이 계속 추적되는 상태로 끌어넣으면 파일이 삭제됩니다.
.gitignore 파일을 만들기 때문에 빈 .txt 파일을 만들기만 하면 됩니다.
그런 다음 cmd에 다음 행을 적으면서 이름을 변경해야 합니다(여기서).
git.txt
방금 만든 파일의 이름입니다):
rename git.txt .gitignore
- 그런 다음 파일을 열고 무시하고 싶은 추적되지 않은 파일을 모두 쓸 수 있습니다.예를 들어, 내 것은 다음과 같습니다.
#OS junk files
[Tt]humbs.db
*.DS_Store
#Visual Studio files
*.[Oo]bj
*.user
*.aps
*.pch
*.vspscc
*.vssscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.[Cc]ache
*.ilk
*.log
*.lib
*.sbr
*.sdf
*.pyc
*.xml
ipch/
obj/
[Bb]in
[Dd]ebug*/
[Rr]elease*/
Ankh.NoLoad
#Tooling
_ReSharper*/
*.resharper
[Tt]est[Rr]esult*
#Project files
[Bb]uild/
#Subversion files
.svn
# Office Temp Files
~$*
GitHub의 유용한 .gitignore 파일 모음이 있습니다.
이 파일이 있으면 다른 파일과 마찬가지로 Git 저장소에 추가해야 하며 저장소 루트에만 있어야 합니다.
그런 다음 단말기에 다음 행을 작성해야 합니다.
git config --global core.excludesfile ~/.gitignore_global
공식 문서:
시스템의 모든 Git 저장소에 있는 파일을 무시하기 위한 규칙 목록인 글로벌 .gitignore 파일을 생성할 수도 있습니다.예를 들어 ~/.gitignore_global에 파일을 생성하고 여기에 몇 가지 규칙을 추가할 수 있습니다.
터미널을 엽니다.터미널에서 git config --global core.excludes file ~/.gitignore_global 명령을 실행합니다.
리포지토리가 이미 있는 경우 다음 명령을 실행해야 합니다.
git rm -r --cached .
git add .
git commit -m ".gitignore is now working"
2단계가 작동하지 않으면 추가할 파일의 구멍 경로를 작성해야 합니다.
여기에 지정된 대로 인덱스를 업데이트할 수 있습니다.
git update-index --assume-unchanged /path/to/file
이렇게 하면 파일이 다음에 표시되지 않습니다.git status
또는git diff
.
파일 추적을 다시 시작하려면 다음을 실행합니다.
git update-index --no-assume-unchanged /path/to/file
추가한 경우.gitignore
너무 늦었습니다. Git는 이미 커밋된 파일을 계속 추적할 것입니다.이 문제를 해결하려면 항상 원하지 않는 파일의 캐시된 모든 인스턴스를 제거할 수 있습니다.
먼저 실제로 추적 중인 파일을 확인하려면 다음을 실행합니다.
git ls-tree --name-only --full-tree -r HEAD
다음과 같은 디렉터리에서 원하지 않는 파일을 발견했다고 가정해 보겠습니다.cache/
따라서 모든 파일 대신 해당 디렉터리를 대상으로 지정하는 것이 더 안전합니다.
그래서 대신에:
git rm -r --cached .
원하지 않는 파일 또는 디렉터리를 대상으로 지정하는 것이 더 안전합니다.
git rm -r --cached cache/
그런 다음 모든 변경 사항을 추가합니다.
git add .
그리고 커밋...
git commit -m ".gitignore is now working"
참조: https://amyetheredge.com/code/13.html
다음은 현재 제외 패턴 집합에서 무시되는 파일을 "추적 해제"하는 한 가지 방법입니다.
(GIT_INDEX_FILE=some-non-existent-file \
git ls-files --exclude-standard --others --directory --ignored -z) |
xargs -0 git rm --cached -r --ignore-unmatch --
이렇게 하면 파일이 작업 디렉토리에 남아 있지만 인덱스에서 제거됩니다.
여기서 사용되는 트릭은 gits-files에 존재하지 않는 인덱스 파일을 제공하여 추적된 파일이 없다고 생각하도록 하는 것입니다.위의 셸 코드는 인덱스가 비어 있으면 무시될 모든 파일을 요청한 다음 gitm을 사용하여 실제 인덱스에서 제거합니다.
파일이 "추적 해제"된 후 git status를 사용하여 중요한 항목이 제거되지 않았는지 확인합니다(제거 패턴을 조정하고 git reset -- 경로를 사용하여 제거된 인덱스 항목을 복원).그런 다음 "쓰레기"를 제외한 새로운 약속을 하십시오.
"잔인함"은 여전히 오래된 커밋에 있을 것입니다.깨끗한 기록이 정말로 필요한 경우 git filter-branch를 사용하여 이전 커밋의 깨끗한 버전을 생성할 수 있습니다(예: git filter-branch를 사용하면 "history"를 다시 작성할 수 있으므로 "crud"가 처음 도입된 후 기록 커밋을 끌어낸 공동작업자가 있는 경우 가볍게 처리해서는 안 됩니다).
사용하다git clean
이 실행에 대한 도움말 보기
git clean -h
먼저 어떤 일이 발생하는지 확인하려면 -n 스위치를 통과하여 모의 실행을 수행해야 합니다.
git clean -xn
Giting nored 가비지 제거 방법
git clean -xdf
주의:데이터베이스와 같은 로컬 구성 파일을 무시하고 있을 수 있습니다.yml도 제거됩니다.사용자의 책임 하에 사용하십시오.
그리고나서
git add .
git commit -m ".gitignore is now working"
git push
이것이 기존 저장소에 .gitignore 파일을 추가하는 쉬운 방법이라고 생각합니다.
필수 구성 요소:
Github 계정에 액세스하려면 브라우저가 필요합니다.
스텝
- 필요한(기존) 프로젝트에 새 파일을 만들고 이름을 .gitignore로 지정합니다.파일 이름을 .gitignore로 지정하면 .gitignore 템플릿에 대한 유용한 프롬프트가 나타납니다.이러한 템플릿을 사용하거나 gitignore.io 을 사용하여 gitignore 파일의 내용을 생성합니다.
- 변경 내용을 커밋합니다.
- 이제 이 리포지토리를 복제합니다.
재미있게 보내!
언급URL : https://stackoverflow.com/questions/19663093/apply-gitignore-on-an-existing-repository-already-tracking-large-number-of-file
'programing' 카테고리의 다른 글
이클립스에서 내 프로젝트 옆에 빨간색 느낌표가 있는 이유는 무엇입니까? (0) | 2023.05.01 |
---|---|
인덱스가 배열 범위를 벗어났습니다. (Microsoft)SqlServer.smo) (0) | 2023.05.01 |
Excel에서 특정 워크시트를 활성화하는 방법은 무엇입니까? (0) | 2023.05.01 |
각 개체에 대해 일반 리포지토리를 만드는 것과 특정 리포지토리를 만드는 것의 이점은 무엇입니까? (0) | 2023.05.01 |
WPF에서 마진 속성을 애니메이션화하는 방법 (0) | 2023.05.01 |