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 및 put default_values..gitignore의 txt.사람들에게 default_values_template를 복사하도록 지시합니다.txt를 default_values로 지정합니다.로컬 작업 공간에서 txt를 수행하고 필요에 따라 변경합니다.
스머지/클린 스크립팅을 살펴봅니다.이렇게 하면 파일을 버전 제어할 수 있지만 파일이 체크아웃될 때 일반/자리 표시자 데이터를 파일의 컴퓨터별 데이터로 대체하여 "스밍"할 수 있습니다.
이를 커밋하면 컴퓨터별 정보를 일반 정보 또는 자리 표시자 정보로 대체하여 "청소"합니다.
스미지/청소 스크립트는 순서가 다른 여러 번 적용하는 것이 시퀀스의 마지막 스크립트를 실행하는 것과 같다는 점에서 결정론적이어야 합니다.
리포지토리를 노출해야 하지만 내용에 중요한 정보가 포함되어 있을 수 있는 경우 암호에도 동일하게 적용할 수 있습니다.
인덱스에 있는 파일의 내용을 간단히 캡처할 수 있도록 "정리" 필터를 정의하여 이 문제를 해결했습니다.
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
안타깝게도 클린 스크립트 내에서 처리 중인 파일을 구분할 수 없기 때문에 여러 파일에 대해 일반화할 수 있는 방법을 찾을 수 없습니다.물론 각 파일에 대해 다른 필터 규칙을 추가하는 것을 막을 수 있는 것은 없지만, 약간 모호합니다.
팀에 맞는 솔루션을 찾았습니다.한 후 했습니다. I 리 심 우 의 리 에 githhook 공 유 고 하 을 릿 한 가 추 후 릿 플 템 추 후 다 니 습 했 가 를 커 크 밋 사 전 는 하 인 확 지는었되수정 파 이일파는일을 플우볼템크를링해통▁we▁hook추▁that후ith다it▁agit reset -- templatefile.txt유일하게 변경된 파일인 경우 커밋도 중단합니다.
서브모듈을 조사하는 것을 제안합니다.시스템별 파일을 하위 모듈에 배치하는 경우 git add는 이를 무시해야 합니다.
언급URL : https://stackoverflow.com/questions/4348590/how-can-i-make-git-ignore-future-revisions-to-a-file
'programing' 카테고리의 다른 글
| 콘다 명령을 찾을 수 없습니다. (0) | 2023.07.09 |
|---|---|
| 푸시 알림에서 앱이 시작/열렸는지 탐지 (0) | 2023.07.09 |
| 두 개의 열을 기준으로 두 개의 데이터 프레임을 결합하려면 어떻게 해야 합니까? (0) | 2023.07.09 |
| 결합된 ggplot에 대한 공통 범례 추가 (0) | 2023.07.09 |
| MongoDB Java 드라이버에 대한 로깅 구성 (0) | 2023.07.09 |