programing

Git repo에 파일을 보관하지만 변경 내용을 추적하지 않음

abcjava 2023. 5. 21. 10:45
반응형

Git repo에 파일을 보관하지만 변경 내용을 추적하지 않음

GitHub 보고서에 일부 파일을 포함해야 하지만 변경 내용을 추적할 수 없습니다.어떻게 하면 이 일을 해낼 수 있을까요?예를 들어 로그인 자격 증명과 같은 중요한 사용자 정보가 포함된 파일이 사용됩니다.

예를 들어 새 클라이언트에 이 프레임워크의 새 설치를 배포하고 다음 파일을 다운로드하고(기본값 CHANGEME) 이 클라이언트에 맞게 변경하면 됩니다(데이터베이스 자격 증명, 전자 메일 주소 정보, 사용자 지정 CSS).

// The production config files. I want the files but they need to be updated to specific client needs
application/config/production/config.php
application/config/production/database.php
application/config/production/tank_auth.php
// Index page, defines the environment (production|development)
/index.php
// All of the css/js cache (keep the folder but not the contents)
/assets/cache/*
// Production user based styling (color, fonts etc) needs to be updated specific to client needs
/assets/frontend/css/user/frontend-user.css

현재 실행 중인 경우

git clone git@github.com:user123/myRepo.git httpdocs

그런 다음 위의 파일을 편집합니다. 모든 것이 좋습니다.핫픽스 또는 패치를 릴리스하고 실행할 때까지git pull그러면 모든 변경 내용이 덮어씁니다.

Git은 이를 위한 다른 해결책을 가지고 있습니다.먼저 추적하지 않을 파일을 변경하고 다음 명령을 사용합니다.

git update-index --assume-unchanged FILE_NAME

변경 내용을 다시 추적하려면 다음 명령을 사용합니다.

git update-index --no-assume-unchanged FILE_NAME

git-update-index 설명서

다른 답변의 댓글에서 답변을 끌어내는 방법:

$ git update-index --skip-worktree FILENAME

보다 더 나은 옵션인 것 같습니다.--assume-unchanged

이에 대한 자세한 내용은 여기를 참조하십시오. Git - 'assume-unchanged'와 'skip-worktree'의 차이

코드 점화기 프로젝트를 위해 데이터베이스를 보관합니다.repo의 php.dllconfig.dll.dll.dll.

그런 다음 구성을 추가합니다.php applications/config/sys.php에서 .gitignore 파일로.

마지막으로 배포할 때 .example 파일을 구성에 복사할 수 있습니다.php 및 데이터베이스.php), 사용자 지정하면 GIT에 의해 추적되지 않습니다.

git 버전 2.25.1에서 권장되는 방법은 저장소에 있는 파일의 템플릿을 추적하여 새 파일로 복사하고 로컬로 수정하는 것입니다(의 새 파일 이름은 무시)..gitignore(여기서부터):

사용자는 종종 변경되지 않은 가정 및 건너뛰기 작업 트리 비트를 사용하여 Git에게 추적되는 파일의 변경 사항을 무시하도록 지시합니다.특정 작업을 수행할 때 Git가 여전히 인덱스에 대해 작업 트리 파일을 확인할 수 있으므로 예상대로 작동하지 않습니다.일반적으로 Git는 추적된 파일의 변경 사항을 무시할 수 있는 방법을 제공하지 않으므로 대체 솔루션을 사용하는 것이 좋습니다.

예를 들어, 변경하려는 파일이 구성 파일의 일종인 경우 리포지토리에 샘플 구성 파일이 포함되어 있으면 무시된 이름으로 복사하여 수정할 수 있습니다.저장소에는 샘플 파일을 템플릿으로 처리하여 자동으로 수정 및 복사하는 스크립트도 포함될 수 있습니다.

나는 그것들을 당신의 것에 넣을 것입니다..gitignore파일을 저장하고 필요에 따라 수동으로 복사합니다.

따라서 스켈레톤 파일 이름은 git이고 무시 파일 이름은 git이 아닙니다(그러나 .gitignore에 있습니다).그런 식으로 '템플릿'에서 '실제'로 복사하는 수동 단계(스켈레톤보다 더 나은 이름)가 완료되면 즉시 무시됩니다.

주어진 답은 문제를 부분적으로 해결하는 것이지만, 훨씬 더 많은 문제를 도입하는 것입니다.

"웹"을 보존해야 했습니다.local.config" 파일입니다.저에게 효과가 있었던 유일한 해결책은 다음과 같습니다.

프로젝트에서 파일 제외

파일의 별도 복사본을 웹으로 만듭니다.LocalTemplate.config

이제 "웹"입니다.LocalTemplate.config"는 Git에 의해 추적되며 모든 개발자가 시작점으로 사용할 수 있습니다.하지만, "웹".Local.config"는 프로젝트의 일부가 아닌 경우 자동으로 무시됩니다.

파일 이름의 전체 경로(루트의 상대 경로)를 추가해야 합니다.

git update-index --skip-worktree FILENAME.

파일의 전체 경로를 지정하지 않은 경우.오류가 발생합니다.

fatal: Unable to mark file response.json

언급URL : https://stackoverflow.com/questions/9794931/keep-file-in-a-git-repo-but-dont-track-changes

반응형