2017-09-21 16 views
1

주어진 파일 집합에 기본적으로 git update-index --assume-unchanged FILE_NAME의 결과를 가져 오는 방법이 있습니까? 예를 들어 변경 사항이 기본적으로 추적되지 않는 파일을 나열하는 git 구성 파일은 repo를 복제 한 후에 명령을 실행할 필요가 없습니까? 파일은 저장소에 기본 형식으로 존재하며 개발자가 가져 오게되며 파일에 대한 변경 사항은 후방 견본에 의해 추적되거나 덮어 쓰지 않습니다."git update-index --assume-unchanged"기본적으로

예를 들면 : 프로젝트에서 사용하는 연결 문자열의 자리 표시자를 가진 web.config 파일이 있습니다. 이상적으로 개발자는 repo를 복제하고 해당 자리 표시자를 로컬 리소스를 가리키는 연결 문자열로 바꿉니다. 어떤 명령도 실행할 필요가 없습니다. 이렇게하면 repo에서 web.config 파일의 형식이 변경되지 않고 해당 로컬 변경 사항이 repo로 푸시되지 않으면 이러한 변경 사항이 사후 풀에서 보존됩니다.

config 파일을 사용하면이 방법을 사용할 수 있습니까? 아니면 항상 "변경되지 않은 것으로 가정하는 파일 집합"명령을 실행해야합니까? (assume-unchanged 또는 skip-worktree으로, 인덱스를 twek하는 것보다)

+3

짧은 대답은 "아니오"이고 약간 더 긴 대답은 "하지 마라.하지만 꼭해야만한다면 --skip-worktree'가 필요할 것이다. (대체로, 그 파일들을 무시하고, 커밋하지 않으며, 대신 설치 스크립트의 복사 -와 - 변경을 무시하는 대신에 "샘플"또는 "기본"파일을 저장소에 포함시켜야합니다. -if- appropriate.'git update-index'를 실행하려면이 설치 스크립트가 필요합니다. 대신 복사하여 조정할 수 있습니다.) – torek

답변

1

더 나은 방법이 모두에서 해당 파일을 추적하지만, 그것들을 생성하는 (그리고 그들이 .gitignore에 있는지 확인하지 에, 즉 아니다

:

그런 식으로, 당신은 그들이 추적되지 않기 때문에) (전혀 그 내용은

, 당신 버전과 트랙을 자신의 망할 놈의 인덱스 상태를 관리 할 필요없이 마음대로 로컬로 수정할 수 있습니다) 추적 무시

  • file.tpl (자리 표시 자 값이있는 템플릿 파일).
  • .gitattributesmudge 컨텐츠 필터를 선언하는 결과 생성 된 파일을 무시한 .gitignore (아래 참조) (비 추적 남아 개인) 실제 파일을 템플릿 파일을하고 생산할 수있는 스크립트

파일의 생성은 .gitattributes declaration을 사용하여 content filter driver 통해 자동화된다. 로컬 설정의 내용 파일러 드라이버, 자동, git checkout에, 추적 아닌 (생성을 선언하면

https://i.stack.imgur.com/tumAc.png
("Pro Git book"에서 "Customizing Git - Git Attributes"에서 이미지))

)에 대한 파일 당신.
"Best practice - Git + Build automation - Keeping configs separate"의 전체 예제를 참조하십시오.

+0

굉장하고, 저에게 아주 깨끗합니다! 템플릿을 기반으로 이러한 종류의 파일 (web.config 등)을 생성하는 데 일반적으로 사용되는 도구에 대한 아이디어가 있습니까? –

+0

@HeitorCastro 사용자 정의 할 수 있습니다. 또는 실제 웹 프레임 워크에 따라 다릅니다 (예 : https://support.microsoft.com/en-us/help/815179/how-to-create-the-web-config-file-for-an-asp-net). -application) (또는 http://www.timschaeps.com/using-t4-templates-to-generate-multiple-web-config-files/) – VonC