Windows의 Git 리포지토리에서 디렉토리 무시


1105

Windows에서 msysgit을 사용하여 Git의 디렉토리 또는 폴더를 어떻게 무시할 수 있습니까?


캐시 폴더를 리포지토리에서 완전히 또는 그 내용 만 제외하도록 하시겠습니까?
Gareth

1
OP에 여러 캐시 디렉토리가 있으며 그 내용을 무시해야하지만 저장소를 복제하는 사람을 위해 해당 디렉토리가 작성되도록하고 싶습니다.
Mark Longair

@Gareth : 빈 폴더는 git으로 추적되지 않기 때문에 내용이 무시되면 폴더도 그렇지 않습니까?
eckes

3
일부 사람들은 숨겨진 파일 (보통 .gitkeep)을 사용하여 보관해야하는 디렉토리를 나타 내기 때문에
Gareth

2
/이 자사의 디렉토리는 무시해야합니다 알고하는 무슨 말?
Charlie Parker

답변:


1594

.gitignore프로젝트 디렉토리에 이름이 지정된 파일을 작성하십시오 . 파일에 디렉토리 이름을 입력하여 디렉토리를 무시하십시오 (슬래시가 추가됨).

dir_to_ignore/

자세한 정보는 여기에 있습니다 .


130
Windows cmd 프롬프트에서 'edit .gitignore'또는 'notepad .gitignore'를 사용하여 올바른 파일을 만들 수 있습니다.
Joey Green

44
또는 windows git bash 명령 프롬프트 내에서 'touch .gitignore'를 사용할 수도 있으며, 그러면 메모장 등으로 편집 할 수있는 올바른 이름의 파일이 생성됩니다.
SGB

39
또는 .gitignore라는 파일을 만드십시오. 탐색기를 사용하여 메모장으로 편집하십시오 (마지막 점은 제거됩니다). 그렇게하면 명령 프롬프트를 사용할 필요가 없습니다.
P. Galbraith

6
또는 터미널에서 .gitignore를 vim 할 수 있습니다. :)
MollyCat

34
또는 가장 빠른 방법이더라도 놀랍게도 언급되지 않은 콘솔에 "echo folder_to_ignore >> .gitignore"를 입력하십시오.
대장장이

205

.gitignore실제로 파일 이름이 이면 Windows 탐색기가 표시 됩니다 .gitignore.txt.

힘내 사용하지 않습니다 .gitignore.txt

.gitignoreWindows 탐색기는 파일 이름이없는 gitignore 유형의 파일이라고 생각하기 때문에 파일 이름을로 바꿀 수 없습니다 .

비 명령 줄 솔루션 :

파일 이름을 ".gitignore"로 바꿀 수 있습니다 . ".gitignore"를 만듭니다.

46
작동합니까? 나는 항상 사람들에게 메모장을 열고 다른 이름으로 저장 대화 상자에 큰 따옴표로 둘러싸인 파일 이름을 입력하도록 지시했습니다. 예를 들어 ".gitignore"확장명을 자동으로 추가하지 않고 파일 이름 을 저장합니다.
Arrowmaster

9
산뜻한. 후행 기간을 포함하면 효과가 있습니다. 탐색기는 마지막 기간을 제거하여 ".gitignore"라는 파일을 생성합니다. 따옴표 방법이 더 깨끗하고 놀라움을 줄 가능성이 적다고 생각합니다.
Triynko

4
또는 다른 이름으로 저장 대화 상자에서 파일 형식을 "모든 파일 ( . )"로 변경하면 Windows에서 확장자를 추가하지 않습니다.
OsakaWebbie

5
또는 git bash에서 폴더에 "touch .gitignore"를 입력하십시오
Rayjax

3
".gitignore."-이건 대단해! 난 항상 문제가 있었다 .htaccess...
Obmerk Kronen

105

파일과 디렉토리를 무시하는 데는 두 가지 주요 방법이 있습니다.

  1. .gitignore

    • 폴더 .gitignore이외의 저장소 루트 에 파일 배치 .git(Windows에서는 실제 파일 확장자가 표시 되는지 확인한 다음 .gitignore.끝에 파일을 비워두면 비어 있음)
    • 전역 구성 을 만들고 Git 구성에 추가하기 위해 ~/.gitignore_global실행git config --global core.excludesfile ~/.gitignore_global

    참고 : 이전에 추적 한 파일은 다음을 실행하여 추적을 해제 할 수 있습니다. git rm --cached filename

  2. 리포지토리 제외 — 공유 할 필요가없는 로컬 파일의 경우 파일 패턴 또는 디렉토리를 파일에 추가하기 만하면됩니다 .git/info/exclude. 이러한 규칙은 커밋 되지 않으므로 다른 사용자가 볼 수 없습니다 . 자세한 정보는 여기에 있습니다 .

무시 된 파일 목록에서 예외를 만들려면 이 질문을 참조하십시오 .


36
좋은 직업 지적했다 git rm --cached <filename>. .gitignore
MaurerPower

2
git rm --cached <filename>은 .gitignore와 관련된 문제를 해결했습니다 :)
JeremyFelix

1
git rm --cached filename은 절대적으로 중요합니다. git이 여전히 무시한다고 명시 적으로 언급 한 파일을 준비하면서 나를 미치게했습니다 (처음 커밋 후 gitignore가 생성되었습니다). 대단히 감사합니다!
Potaito

1
내 문제를 해결했다. gitignore에 공급 업체 폴더를 추가했지만 Git은 laravel 저장소의 공급 업체 폴더를 추적하고있었습니다. 고마워요
Jayant

44

나는에서 파일 생성 몇 가지 문제가 있었다 Windows 탐색기 A의 .시작 부분입니다.

해결 방법은 커맨드 쉘로 가서 "edit"를 사용하여 새 파일을 만드는 것입니다.


2
또는 .끝에 여분 을 추가하면 탐색기가 .gitignore확장 기능 이라고 생각하지 않습니다 . 그런 다음 항목에없는 확장자를 가진 점을 후행하는 것은 단지 먹을 가져옵니다 당신이 남아 있습니다 .gitignore TL; DR : 그 이름을 시도 .gitignore.=> 당신은 끝낼.gitignore
leerssej

43

Git에게 특정 파일이나 폴더를 무시하도록 지시하려면 파일을 만들어야 .gitignore합니다.

그러나 Windows 탐색기에서는 파일 이름을 제공해야합니다. 확장자 만있는 파일은 만들 수 없습니다. 비결은 빈 텍스트 파일을 만들고 명령 프롬프트로 이동하여 파일 이름을 다음과 같이 변경하는 것입니다 .gitignore.

ren "New Text Document.txt" .gitignore

이제 좋아하는 텍스트 편집기로 파일을 열고 무시하려는 파일 / 폴더 이름을 추가하십시오. 다음과 같이 와일드 카드를 사용할 수도 있습니다 *.txt.


15
또는 그냥 : echo dir_to_ignore /> .gitignore
Oliver

2
또는 type nul > .gitignore빈 파일을 만들려면
Castro Roy

또는 .gitignore.Windows 탐색기에서 파일 확장자가 숨겨져 있지 않을 때 파일을 호출하십시오
Vairis

22

폴더 안에 파일이 아닌 폴더를 유지하려면 "*"를 내용으로 폴더에 ".gitignore"파일을 넣으십시오. 이 파일은 Git이 저장소의 모든 내용을 무시하도록합니다. 그러나 .gitignore저장소에 포함됩니다.

$ git add path/to/folder/.gitignore

빈 폴더를 추가하면이 메시지가 나타납니다 (.gitignore는 숨겨진 파일입니다)

The following paths are ignored by one of your .gitignore files:
path/to/folder/.gitignore
Use -f if you really want to add them.
fatal: no files added

따라서 "-f"를 사용하여 강제로 추가하십시오.

$ git add path/to/folder/.gitignore -f

19

Windows에는 슬래시가 추가로 있습니다. 단일 디렉토리 제외 .gitignore 와를

dir_to_exclude /

가능하지만 모든 디렉토리를 제외하고는

/

당신이 (같은 공간에 파일 이름이있을 때 문제가 발생 my file.txt디렉토리에) : 힘내 배쉬는 백 슬래시 (같은 이러한 공간을 탈출 my\ file.txt) 및 힘내 Windows를 구분하지 않습니다에 /\.

모든 디렉토리를 제외하려면 다음을 사용하는 것이 좋습니다.

** /

두 개의 연속 된 별표는 디렉토리 내용을 나타냅니다.


15

또한 \.git\info프로젝트 디렉토리에는 .gitignore(제 생각에) 실제로 동일한 것과 같은 제외 파일이 있습니다. 무시할 파일과 디렉토리를 추가 할 수 있습니다.


나는이 접근법을 좋아한다. 나는 거기에있는 경로를 따라갈 수 없다. 메인 리포지토리의 폴더를 무시하고 싶다. 어떻게?
Shimmy Weitzhandler

그러나 파일을 .git에만 두지 않아야합니까 (공식적인 방법으로 내용을 조작하십시오)?
피터 Mortensen

13

하위 폴더를 제외해야하는 경우 **와일드 카드를 사용하여 모든 수준의 하위 디렉토리를 제외 할 수 있습니다 .

**/build/output/Debug/

12

Git에서 전체 디렉토리를 무시하려면 가장 쉬운 방법은 단순히 "*"를 포함하는 대상 디렉토리에 .gitignore 파일을 포함시키는 것입니다.

예를 들어

예시 시스템

/root/
    .gitignore
    /dirA/
        someFile1.txt
        someFile2.txt
    /dirB/
        .gitignore
        someFile3.txt
        someFile4.txt

  • / dirB /의 내용을 무시하십시오

최상위 레벨 .gitignore (/root/.gitignore)

  • 이것은 표준 gitignore 정보가가는 곳입니다

무시 된 디렉토리 .gitignore (/root/dirB.gitignore)

  • 이 파일은 단지 '*'로 읽히고 디렉토리는 그 자체와 모든 파일을 완전히 무시합니다!

그리고 그것은 간단합니다 :)


10

다른 모든 실패 파일을 편집하려고

/.git/info/exclude

다음과 같이 파일 끝에 원하는 디렉토리를 추가하십시오.

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
assets/
compiled/

무시할 파일 및 디렉토리 목록에 "자산"및 "컴파일"폴더를 추가했습니다.


1
Windows 10에서 Atom을 사용하고 있습니다. 작동합니다! 고마워 친구!
Putu De

나는 현재 구성으로 다른 모든 것을 시도했으며 이것이 나의 궁극적 인 대답이었습니다.
Xedret

9

유닉스에서 :

touch .gitignore

Windows에서 :

echo > .gitignore

터미널에서 실행되는 이러한 명령 .gitignore은 현재 위치에 파일을 만듭니다 .

그런 다음 .gitignore파일 또는 폴더를 무시해야 할 파일 (예 : 메모장 ++)을이 파일에 추가하십시오 . 변경 사항을 저장하십시오. 그게 다야 :)

추가 정보 : .gitignore



8

Git이 .gitignoreWindows 에서 파일을 가져 오는 데 문제가있었습니다 . $GIT_DIR/info/exclude파일은 항상하지만 작동하는 것 같다.

그러나이 방법의 단점은 $GIT_DIR디렉토리 의 파일 이 체크인에 포함되지 않으므로 공유되지 않는다는 것입니다.

ps $GIT_DIR는 일반적으로 숨겨진 폴더입니다..git


그렇습니다 .Windows의 git은 .gitignore에 대해 정말 까다 롭습니다. 로컬 제외 파일은 내가 필요한 것을 수행합니다. 감사!
andersop

6

문제는 작업 트리가 다음과 같다고 가정합니다.

a-cache/foo
a-cache/index.html
b-cache/bar
b-cache/foo
b-cache/index.html
.gitignore

... .gitignore당신 과 함께 설명합니다. 이렇게하면 다음 git status과 같은 출력 이 제공됩니다 .

$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#    .gitignore
#    a-cache/
#    b-cache/

... 경우index.html 파일은 아직 저장소에 추가되지 않았습니다. Git은 캐시 디렉토리에 무시되지 않은 파일이 있지만 디렉토리 만보고합니다.이 문제를 해결하려면 index.html파일을 추가하고 커밋했는지 확인하십시오 .

git add *cache/index.html
git commit -m "Adding index.html files to the cache directories"

... 그리고 당신의 git status의지는 다음과 같습니다 :

$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#    .gitignore
nothing added to commit but untracked files present (use "git add" to track)

(물론 당신도 커밋하고 싶습니다 .gitignore. 나는이 테스트 케이스에 게으르고있었습니다.)


1
당신은 아마 않는 .gitignore 특히 당신이 그것에 변경 사항을 추적 할 가능성이있어 확약 할, 그리고 (하나 작업하는 경우) 그래서 팀이다. 참조 stackoverflow.com/a/767213/123033
데이브 Everitt

2
@Dave Everitt : 이것이 바로 "왜 .gitignore도 커밋하고 싶다"고 말한 이유입니다.
Mark Longair

6

Windows 및 Mac에서 현재 디렉토리에서 Flower_Data_Folder라는 폴더를 무시하려면 다음을 수행하십시오.

echo Flower_Data_Folder >> .gitignore

파일 이름이 data.txt다음과 같은 경우 :

echo data.txt >> .gitignore

"Data / passwords.txt"와 같은 경로 인 경우

echo "Data/passwords.txt" >> .gitignore. 

2

비슷한 문제가있었습니다. Linux 사용자와 공유 저장소가있는 Windows 도구 체인에서 작업하고 주어진 폴더에 동일한 (사례 제외) 이름의 파일을 행복하게 만듭니다.

그 결과 리포지토리를 복제 할 수 있으며 체크인 한 경우 혼란 스러울 수있는 수십 개의 '수정 된'파일이 즉시 있습니다.

Windows는 대소 문자를 구분하고 Git은 대소 문자를 무시하지 않도록 설정했지만 여전히 실패합니다 (Win32 API 호출에서 분명히).

파일을 gitignore하면 .gitignore 파일을 추적하지 않아야합니다.

그러나 나는 여기에 좋은 대답을 찾았습니다.

http://archive.robwilkerson.org/2010/03/02/git-tip-ignore-changes-to-tracked-files/index.html


링크가 끊어진 것 같습니다 (처음 'https'버전으로 리디렉션 됨) : "보안 연결에 실패했습니다. archive.robwilkerson.org에 연결하는 동안 오류가 발생했습니다. PR_END_OF_FILE_ERROR"
Peter Mortensen

0

그냥 만들 .gitignore그런 다음 전을 위해 폴더의 이름을 폴더 추가 프로젝트에 파일을 :

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