2012-09-06 5 views
4

Successful Git branch에 의해 도입 된 작업 흐름을 사용하고 있습니다. 개발 지점의 구성과 같은 변경 관리 방법에 대해 혼란 스럽습니다.git에서 개인적인 변경 사항을 유지하는 방법은 무엇입니까?

마스터에서 병합 할 때 작업 트리를 깨끗하게 유지하려면 변경 사항을 숨긴다. 변경 사항을 적용하면 마스터를 병합 할 때 매우주의해야합니다.

git에서 비공개 변경 사항을 관리하는 더 좋은 방법이 있습니까?

답변

4

ar 여러 옵션 :

  1. 소스 제어에 개인 파일을 넣지 마십시오. 예를 들어 개발자마다 개인 변경 사항이있는 config.ini이 필요하면 리포지토리에 예제 설정이있는 config.ini.template 파일을 만든 다음 각 개발자는 복사본을 만들어 비공개 설정으로 사본을 수정해야합니다. config.ini.gitignore에 추가해야합니다.

  2. 을 저장소에 추가하고 git update-index --assume-unchanged config.ini을 사용하면 파일에서 로컬 변경 사항을 무시하므로 파일을 커밋하지 않아도됩니다.

  3. 각 환경에 대한 여러 환경 설정 파일을 저장소에 추가하십시오. config-robotment.ini, config-kan.ini, config-produciton.ini 등이있다. 그런 다음 응용 프로그램이 사용할 파일을 선택할 수 있도록 명령 행 매개 변수 또는 환경 변수 또는 이와 유사한 것을 사용하십시오.

포인트는 구성에 분기를 사용하지 않습니다. 그렇지 않으면 개발 중에 분기/병합하는 것이 항상 어려워집니다.

+0

귀하의 조언 주셔서 감사하지만, 내가 힘내에게 설정 파일을 추가하고 변경할 수없는 프로젝트에 노력하고 있습니다. 어쩌면 내 프로젝트에서이 작업을 시도해 볼 수 있습니다. – robotment

+0

@robotment 옵션 2를 사용하면 저장소에 영향을 미치지 않고 작업 복사본 만 영향을줍니다. – kan

+0

설정 파일은 이미 repo에 있으며 git update-indexc --assume-unchanged config.ini를 사용합니다. 업스트림 업데이트 config.ini가 로컬 파일을 업데이트합니까? – robotment

0

다른 이름으로 로컬 브랜치를 만들고 필요에 따라 업스트림 마스터 브랜치를 병합하십시오.

+0

OP에 '업스트림 분기 병합'명령은 무엇입니까? 어느 지점에 있어야합니까? –

+0

git merge origin/master – linquize

+0

@linquize 제출하고자하는 경우, 내가 실제로하는 일을 선택해야합니다. – robotment

1

구성 파일의 경우 선택 사항은 "Git: keep specific files unmerged"으로 재개됩니다.

나는 (각 분기마다) 각 환경마다 다른 값 파일을 버전 관리하는 것을 선호합니다. 그런 식으로 merge를 다룰 필요가 없습니다 (값 파일 "dev.config"은 값 분기 파일 "master.config")가 사용된다

나는 또한 버전 개인 남아 분기의 체크 아웃에) 버전이 아닌 실제 설정 파일 (생성하는 콘텐츠 filter driver 위해서는 템플릿 파일 :

smudge clean filter driver

관련 문제