git이 파일의 향후 개정을 무시하도록하려면 어떻게해야합니까?
git 저장소에 포함 된 파일의 기본 버전을 만들었습니다. 누군가가 저장소를 복제 할 때이 파일의 사본을 얻는 것이 중요합니다. 그러나 나중에이 파일의 변경 사항을 무시하도록 git을 설정하고 싶습니다. .gitignore
추적되지 않은 파일에서만 작동합니다.
내 동기는이 파일에 기계 별 정보가 포함되어 있다는 것입니다. 기본 값을 제공하고 사람들이 원본 저장소로 다시 푸시되지 않는 로컬 변경을 허용하여 새 변경 사항을 가져올 때 병합 충돌을 생성하도록 허용하고 싶습니다.
우리는 일반적으로 꽤 게으르고 git add .
많이 사용 하기 때문에 git에게이 파일을 무시하라고 말할 수 없다면 변경 사항이 커밋되고 푸시 될 것이라고 확신합니다.
요약,
- 파일을 만들고
default_values.txt
내 git 저장소에 추가되고 누군가 해당 저장소를 복제 할 때 포함 되는 파일을 호출하고 싶습니다. git add .
default_values.txt
커밋에 추가해서는 안됩니다 .- 이 동작은 저장소의 모든 복제본에 전달되어야합니다.
다른 많은 사람들이 언급했듯이 좋은 현대적인 솔루션은 다음과 같습니다.
git update-index --skip-worktree default_values.txt
다음을 사용하여 다시 허용하기로 결정할 때까지 로컬 및 업스트림 파일의 변경 사항을 무시합니다.
git update-index --no-skip-worktree default_values.txt
다음으로 건너 뛴 것으로 표시된 파일 목록을 가져올 수 있습니다.
git ls-files -v . | grep ^S
--skip-worktree와 달리 --assume-unchanged 상태는 업스트림 변경 사항을 가져 오면 손실됩니다.
당신이 찾고있는 것은 git update-index --assume-unchanged default_values.txt
입니다.
자세한 내용은 문서를 참조하십시오. http://www.kernel.org/pub/software/scm/git/docs/git-update-index.html
내가 일반적으로 본 접근 방식은 다른 이름으로 파일을 만드는 것입니다. 예 : default_values_template.txt 및 default_values.txt를 .gitignore에 넣습니다. 사람들에게 default_values_template.txt를 로컬 작업 공간의 default_values.txt에 복사하고 필요에 따라 변경하도록 지시합니다.
얼룩 / 깨끗한 스크립팅을 살펴보십시오. 이렇게하면 파일의 버전을 제어 할 수 있지만 체크 아웃 할 때 일반 / 자리 표시 자 데이터를 파일의 시스템 특정 데이터로 대체하여 파일을 "번짐"합니다.
커밋 할 때 컴퓨터 특정 정보를 일반 또는 자리 표시 자 정보로 대체하여 "정리"합니다.
문지르 기 / 깨끗한 스크립트는 여러 번 적용한다는 점에서 결정적이어야하며 다른 순서로 시퀀스의 마지막 스크립트를 실행하는 것과 동일합니다.
저장소를 노출해야하는 경우 비밀번호에도 동일하게 적용 할 수 있지만 콘텐츠에 민감한 정보가 포함될 수 있습니다.
색인에있는 파일의 내용을 간단히 분류하기 위해 "clean"필터를 정의하여이 문제를 해결했습니다.
git show :path/to/myfile
지정된 파일에 대한 색인의 내용 만 인쇄해야하므로 스크립트에서이를 사용하여 작업 사본을 색인의 변경되지 않은 사본으로 바꿀 수 있습니다.
#! /bin/sh
git show :$1
관련 파일에 대한 "깨끗한"필터로 설정합니다 ( "discard_changes"에 넣었다고 가정).
$ git config filter.ignore_myfile.clean "discard_changes path/to/myfile"
$ echo "path/to/myfile filter=ignore_myfile" >> .gitattributes
안타깝게도이 파일을 여러 파일에 일반화 할 수있는 방법을 찾을 수 없습니다. 깨끗한 스크립트 내에서 처리중인 파일을 알 수있는 방법이 없기 때문입니다. 물론 각 파일에 대해 다른 필터 규칙을 추가하는 것을 막을 수는 없지만 약간 어색합니다.
우리 팀에 적합한 솔루션을 찾았습니다. 심볼릭 링크를 통해 githook을 공유하고 git에 템플릿 파일을 추가 한 후 템플릿 파일이 수정되었는지 여부를 확인하는 사전 커밋 후크를 추가했습니다 git reset -- templatefile.txt
. 변경된 유일한 파일 인 경우 커밋도 중단합니다.
하위 모듈을 살펴 보는 것이 좋습니다. 시스템 특정 파일을 하위 모듈에 배치하는 경우 git add는이를 무시해야합니다.
참고 URL : https://stackoverflow.com/questions/4348590/how-can-i-make-git-ignore-future-revisions-to-a-file
'developer tip' 카테고리의 다른 글
공통 데이터 구조를 가진 오픈 소스 C 라이브러리가 있습니까? (0) | 2020.08.13 |
---|---|
Angular JavaScript 코드를 디버깅하는 방법 (0) | 2020.08.13 |
Twitter 부트 스트랩이 글꼴 크기에 픽셀을 사용하는 이유는 무엇입니까? (0) | 2020.08.13 |
Swift에서 저장된 속성 재정의 (0) | 2020.08.13 |
jupyter 노트북의 셀 축소 (0) | 2020.08.13 |