.gitignore 파일에도 불구하고 강제 추가


413

git파일에도 불구하고 .gitignore파일 을 추가 하는 방법이 있습니까?


4
더 좋은 질문이 될 수 있습니다-왜 그렇게 하시겠습니까? 파일을 추적하려면 무시하십시오 ( 예 : .gitignore파일 의 패턴 앞에 ). !!dont/ignore/this/file
Ohad Schneider

6
@OhadSchneider 빌드 파일을 다른 분기로 강제 커밋하는 경우에 유용합니다. 안전한 배포를위한 StrongLoop과 같은 몇몇 프로젝트
Deminetix

5
@OhadSchneider 우리에게는 대부분의 개발자가 Visual Studio 2015와 함께 git을 설치하기 때문에 사용자 폴더에 전역 gitignore가 추가됩니다. * .dll 및 * .exe와 같은 파일은 제외됩니다. 빌드 중에 검색되는 nuget 패키지 만 사용하는 새로운 프로젝트에는 유용하지만, 소수의 오래된 프로젝트에는 여전히 솔루션에서 수동으로 참조되는 dll을 사용합니다. 이러한 프로젝트의 경우 모든 개발자에게 전역 gitignore에서 * .dll 및 * .exe 파일을 주석 처리하도록 지시하는 대신 수동으로 포함 시키려고합니다.
Nullius

4
@ Nullius 더 높은 수준에서 무시할 수는 없습니다 .gitignore(예 : .gitignoredll과 같은 폴더에 또는 위의 것 또는 다른 것을 추가하십시오)?
하드 슈나이더

답변:


569

참조 man git-add:

   -f, --force
       Allow adding otherwise ignored files.

그래서 이것을 실행

git add --force my/ignore/file.foo

11
작동하지 않는 Uhm, git 상태에서 파일은 여전히 ​​표시되지 않습니다
Mark

5
글쎄, 실제로 작동하는지 확인하기 위해 테스트했습니다. environemnt (OS, git version ...)를 설명 할 수 있습니까? : 이것은 기본적으로 내가 무슨 짓을했는지입니다 echo "/foo" >> .gitignore; echo "bar" > foo; git add foo # should throw an error; git add -p foo # works(명령 (1) (1)에 의해 실행 주석에 줄 바꿈을 붙여 넣을 수 없습니다
다니엘 Böhmer

4
이전에도 git update-index를 실행했는데 파일에서 변경되지 않은 것으로 가정했습니다. 나는 --no-asume-unchanged로 그것을 취소해야했고 그것은 효과가있었습니다
Jako

4
이것은 --no-- 가정하지 않은 채 시도한 후에도 Windows에서 git 1.9.5를 사용하여 와일드 카드를 사용하는 경우에만 작동합니다. "git add-f <filename>"은 아무 것도하지 않지만 "git add -f *"는 작동합니다. TortoiseGit 사용도 가능합니다.
mhenry1384

@ mhenry1384 Windows에서만 와일드 카드로 작동하는 이유는 경로 구분 기호의 사용 방법 때문일 수 있습니다. 나를 위해 슬래시 "/"는 작동하지만 백 슬래시 "\"는 작동하지 않습니다. cmd / PowerShell이 ​​"/"를 "\"로 변환하면 쉽게 실행할 수 있습니다.
ohw

19

Daniel Böhmer의 작업 솔루션에도 불구하고 Ohad Schneider는 다음과 같이 더 나은 솔루션을 제공했습니다.

파일이 일반적으로 무시되고 파일을 강제로 추가하면 나중에 파일이 삭제 될 때 커밋이 만들어지고 파일이 다시 생성되는 것처럼 실수로 다시 무시 될 수 있습니다.

다음과 같이 .gitignore 파일에서 무시하십시오. Git에서 무시 된 디렉토리의 하위 디렉토리 무시


4
맞습니다. 작은 데이터 파일에 --force 옵션을 사용한 다음 약간의 폴더 구조를 재정렬하고 모든 강제 추적 파일을 클로버했습니다. 그러나 폴더 계층 구조없이 .gitignore사용 !specific-file-name.txt하는 경우이 방법으로 추적이 저장소 주변의 파일을 따릅니다.
멀린

시나리오에 따라 다릅니다. 예를 들어 언젠가는 모든 폴더에서 "1.txt"를 제외 시키려고하거나 언젠가는 "folder1 / *. txt"
AS

14
그것은 "더 나은"해결책이 아닙니다. 다른 문제에 대한 해결책입니다.
aij

2

이를 달성하는 또 다른 방법은 gitignore 파일을 임시로 편집하고 파일을 추가 한 다음 gitignore를 되 돌리는 것입니다. 조금 해키 느낌


10
동의합니다. 귀하가 원하는 것이 아닙니다.
멀린
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.