Git-병합 중 파일 무시
myrepo
원격 beanstalk
서버 에서 리포지토리가 호출 되었습니다 .
내 로컬 컴퓨터에 복제했습니다. 두 개의 추가 분기 : staging
및 dev
. 이 지점도 원격지로 밀었습니다.
지금:
local remote server
--------------------------------------------------------
master ==> Pushes to `master` ==> deployed to `prod`
staging ==> Pushes to `staging` ==> deployed to `staging`
dev ==> Pushes to `dev` ==> deployed to `dev`
config.xml
각 분기마다 다른 파일 이 있습니다.
병합 중에 만이 파일을 무시하고 싶습니다. 하지만 repo 브랜치에서 체크 아웃하거나 커밋 할 때 이것이 포함되기를 원합니다.
내가 원하는 이유는 특정 분기를 가져와 (체크 아웃) 각 서버에 배포하는 배포 스크립트가 있기 때문입니다. 따라서 config.xml
배포 할 때 위에 표시된대로 특정 분기의 파일이 특정 서버로 이동 해야 합니다.
.gitignore
작동하지 않을 것 같아요 . 다른 옵션은 무엇입니까? 무시 된 파일은 체크 아웃 및 커밋의 일부 여야하며 이는 중요합니다. 병합 중에 만 무시해야합니다.
감사!
--no-commit
옵션과 함께 git merge 명령을 사용하여이 문제를 해결 한 다음 준비된 파일을 명시 적으로 제거하고 파일의 변경 사항을 무시합니다. 예 : myfile.txt
다음과 같이 진행 하려면 변경 사항을 무시하고 싶습니다 .
git merge --no-ff --no-commit <merge-branch>
git reset HEAD myfile.txt
git checkout -- myfile.txt
git commit -m "merged <merge-branch>"
건너 뛸 파일 목록이있는 경우 문 2와 3을 for 루프에 넣을 수 있습니다.
나는 결국 git을 찾았습니다 attributes
. 그것을 시도. 지금까지 일하고 있습니다. 아직 모든 시나리오를 확인하지 않았습니다. 그러나 그것이 해결책이어야합니다.
.gitattributes
-하위 디렉토리 또는 파일 하위 집합에 대한 속성을 정의하는 저장소의 루트 수준 파일입니다.
특정 파일에 대해 다른 병합 전략을 사용하도록 Git에 알리는 속성을 지정할 수 있습니다. 여기서 config.xml
우리는 브랜치 의 기존을 보존하고 싶습니다 . 우리는 설정할 필요 merge=ours
로 config.xml
에서 .gitattributes
파일.
merge=ours
병합 충돌이 발생하면 git에게 우리 (현재 분기) 파일을 사용하도록 지시하십시오.
.gitattributes
저장소의 루트 수준에 파일 추가.gitattributes
파일 에서 confix.xml에 대한 속성을 설정할 수 있습니다.config.xml merge=ours
그런 다음 다음을 사용하여 더미 우리의 병합 전략을 정의하십시오.
$ git config --global merge.ours.driver true
stag
양식 dev
브랜치 를 병합하면 병합 이 config.xml 파일과 충돌하는 대신 stag 브랜치의 config.xml이 원래 있던 버전으로 유지됩니다.
를 사용하여 git merge --no-commit
시작한 다음 원하는 방식으로 병합을 편집 할 수 있습니다. 즉, 준비 해제 config.xml
또는 다른 파일을 사용한 다음 커밋합니다. 후크를 사용하여 추가로 자동화하고 싶지만 적어도 한 번은 수동으로 진행할 가치가 있다고 생각합니다.
를 사용 하여 저장소 외부에 .gitignore
보관 config.xml
한 다음 커밋 후 후크 를 사용 하여 적절한 config.xml
파일을 서버 에 업로드 할 수 있습니다 .
여기 git-update-index-작업 트리의 파일 내용을 색인에 등록합니다.
git update-index --assume-unchanged <PATH_OF_THE_FILE>
예:-
git update-index --assume-unchanged somelocation/pom.xml
예:
- 두 개의 분기가 있습니다.
master
,develop
develop
브랜치에 파일을 생성 했으며 병합하는 동안 무시하고 싶습니다.
암호:
git config --global merge.ours.driver true
git checkout master
echo "path/file_to_ignore merge=ours" >> .gitattributes
git merge develop
확장자가 같은 파일을 무시할 수도 있습니다.
예를 들어 .txt
확장자가있는 모든 파일 :
echo "*.txt merge=ours" >> .gitattributes
참고 URL : https://stackoverflow.com/questions/15232000/git-ignore-files-during-merge
'Programming' 카테고리의 다른 글
Chrome에서 페이지로드시 Popstate (0) | 2020.08.28 |
---|---|
Twitter 부트 스트랩 반응 형을 사용하여 navbar 축소 임계 값을 변경하는 방법은 무엇입니까? (0) | 2020.08.28 |
cacerts와 keystore의 차이점은 무엇입니까? (0) | 2020.08.28 |
sklearn 오류 ValueError : 입력에 NaN, 무한대 또는 dtype ( 'float64')에 비해 너무 큰 값이 있습니다. (0) | 2020.08.28 |
Go의 쌍 / 튜플 데이터 유형 (0) | 2020.08.28 |