2011-04-08 4 views
16

나는 잠시 동안 놀아 왔고, 나는 그것을 아주 좋아합니다. 내 경우를 설명해 드리겠습니다.Git이 특정 파일을 무시합니다.

나는 내 저장소와 원격 저장소가있는 두 대의 컴퓨터가 있습니다.

내 파일 내 컴퓨터마다 다른 하나의 구성 파일이 있습니다. 그래서 내 컴퓨터를 뽑을 때 config 파일을 가져올 필요가 없지만 그 밖의 모든 것들은 필요 없습니다. 어떻게하면 될까요?

.gitignore 파일에 대해 읽었지만 어떻게 작동하는지 또는 내 경우에 필요한 것인지는 알 수 없습니다.

답변

31

.gitignore는 이미 체크인하지 않은 파일/폴더의 경우입니다. 기본적으로 저장소에 작성하는 텍스트 파일이며, 배치 된 디렉토리에 상대적인 경로 목록이 있습니다. Git은이를 무시합니다. .gitignore 파일을 저장소의 일부로 체크인 할 수 있습니다. 힘내을 말할 것이다

git update-index --assume-unchanged file 

미래에 만들어 해당 파일에 대한 변경 사항을 무시 : at the end of this page

파일이 이미에 확인 된 경우 저장소는 다음 사용할 수 있습니다 그러나 - 당신은 예를 찾을 수 있습니다 . 그러나 이것은 로컬 구성이므로 체크 아웃하는 각 시스템에서이 작업을 수행해야합니다. 당신은 수행하여 되돌릴 수 있습니다 :

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

을 어떤 파일이 저장소에 해골/예 설정 파일이하는 것이 좋습니다 수 있습니다 포함 구성에 따라 - PHP의 사람이 config_example.php로 할 것과 유사한를, config.php를 작성하기 위해 사람들이 사용합니다. config.php는 무시되므로 리포지터리에서 결코 확인되지 않습니다.

+1

'git update-index --assume-unchanged'가 저에게 도움이되었습니다 ('git' 다음에 하이픈 없음). git 버전 1.8.1.2 사용 - OS X 10.8.2. 감사! – guapolo

+1

@ guapolo 지금까지 대부분의 git 명령은'git command '보다는'git-COMMAND' 형식 이었기 때문에 대답은 –

+0

에 하이픈이 있지만 그 파일은 이미 추적되어 있습니다. --assume-unchanged 옵션을 사용하여 git 명령을 실행 한 다음 마스터를 가져 오려고 시도했지만 여전히 오류 메시지가 표시됩니다. 오류 : 'conf.py'에 대한 로컬 변경 사항이 병합으로 덮어 쓰여집니다. 중단. – fanchyna

6

config.local 파일을 저장소에서 무시하려면 /config.local 줄이있는 .gitignore 파일을 만들고 추가 한 다음 저장소에 커밋하십시오. 그게 전부 야.

1

.gitignore 파일이 필요할 수 있습니다. 이 파일에서 파일 패턴을 한 줄에 하나씩 나열하면 git status이 해당 파일에 대해보고하지 않습니다.

그러나 이미 파일을 커밋 한 경우 git pull을 실행하면 이됩니다.

.gitignore 파일을 저장소에 저지 할 수도 있습니다. 이렇게하면 모든 컴퓨터에서 동일한 파일이 무시됩니다.

+3

주를 전환하려고하면

git update-index --assume-unchanged file 

도움이되지 않습니다주의 사항 : 당신이 있다면 * * 계획을 커밋하지, 대신에 .git/info/exclude를 사용하는 편이 낫다. –

+0

보완적인 의견을 보내 주셔서 감사합니다! –

1

예를 들어 도움이 될 것입니다.

# 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] 
# *~ 
*.pro.user.* 
tmp/ 
release/ 
debug/ 
bin/ 
moc_* 
ui_* 
*.bck 
*_debug 

#Visual Studio stuff 
lib/*.lib 
*.ncb 
*.suo 

이 파일의 단지 부분이다 : 여기서 또한 프로젝트 파일의 일부입니다 내 .gitignore 파일의 한 부분이다. 프로젝트에 따라 조정해야합니다.

요점은 형식이 유연하고 파일을 공유하는 데 문제가 없어야한다는 것입니다. 문제가있는 경우 저장소에서 제외하십시오.

+0

루트 폴더에 배치해야합니까? – Headshota

+0

나는 보통 루트에 하나를 유지합니다. 그런 다음 "master .gitignore"파일에 넣고 싶지 않은 특수한 경우를 위해 폴더에 특수 파일을 만듭니다. –

+0

ignore 파일을 추가했지만 config 파일을 변경하면 상태에서 해당 파일이 수정 된 것으로 표시됩니다. 그것이 어떻게되어야 하는가? – Headshota

0

또한`.gitignore` 위탁하는 지점

$ git checkout master 
error: Your local changes to the following files would be overwritten by checkout: 
    file 
Please commit your changes or stash them before you switch branches. 
Aborting