2011-08-24 2 views
0

저는 Git을 사용하여 CodeIgniter 프로젝트를 관리하고 있습니다. 내 로컬 컴퓨터에서 작업하고 원격 서버로 밀어 넣어 모든 것을 테스트합니다. 그런 다음 git ftp push을 사용하여 다른 호스트의 프로덕션 사이트를 업데이트합니다.로컬 작업 디렉토리, 원격 작업 디렉토리 및 git ftp 대상에 서로 다른 버전의 파일을 저장하려면 어떻게해야합니까?

이제는이 작업을 수행하기 위해 다른 환경 변수를 설정 한 모든 환경에 대해 하나씩 세 가지 index.php 파일이 필요합니다.

그래서 index.php 파일을 gitignore해야하고, 심지어 git-ftp-ignore도 필요합니다. ftp를 위해 그것은 일하고있다. 정상적인 gitignore의 경우 그렇지 않습니다. 원격 서버의 index.php 파일을 계속 업데이트합니다.

나는 git rm --cached index.php을 시도했지만, 내가 얻은 것은 그것이 원격 서버의 index.php 파일을 완전히 삭제한다는 것이다.

내가 뭘 잘못하고 있니?

편집 : 그것은 내가 자식과 함께 할 수있는 게 아니지만, I've found a better way to set the CodeIgniter environment variable 것 같습니다.

답변

3

먼저 무시 메커니즘은 저장소에서 이미 추적중인 파일에 영향을 미치지 않습니다. 따라서 .gitignore을 작동 시키려면 저장소에서 파일을 제거해야합니다 (예 : git rm --cached). 그러나 관찰 한대로 원격 저장소를 업데이트하면 해당 파일이 삭제됩니다.

요약하면 나는이 상황에서 파일 .gitignore을 가져야한다고 생각하지 않습니다. git에서 무시 된 파일의 의미에 대한 미묘한 점이 있습니다. 무시 된 파일은 처분으로 간주됩니다.이 메커니즘은 빌드 제품 용으로 설계 되었기 때문에 무시됩니다. 여기에있는 파일은 무시하고 싶지만 소중한 파일이며 현재 git은이를 지정하는 방법이 없습니다. 당신이 수동으로 index.php을 다시 만들 경우

예를 들어, 귀하의 상황에서, 그하지만 당신이 index.php 추적 된 이전 버전으로 다시 이동 한 다음 다시 어디를 갈하기 git checkout old-commit를 사용하는 경우, 모든 작업 벌금에 나타납니다 전에 git checkout -과 (과) index.php이 (가) 삭제됩니다.

난 당신이 중 일부 다른 파일에서 환경 변수 설정 올바른 소스로 당신의 index.php을 변경하는 것이 제안 : 무시

  1. 저장소
  2. 외부 또는 저장소에, 그리고 저장소에서 추적되지 않은 경로에서

이상적으로 다른 파일이없는 경우에도 기본값을 추가하십시오.

+2

답장을 보내 주셔서 감사합니다. 나는 그것이 내가 git으로 해결할 수있는 것이 아니라는 것을 이해했다. 그래서, 나는 이것을 발견했다. http://philsturgeon.co.uk/news/2009/01/How-to-Support-multiple-production-environments-in-CodeIgniter – Carlo

0

이 질문은 오래된 질문이지만, 나는 이것도 해내 고 과거에 어려움을 겪었습니다.

index.php가 원래 .gitignore에 없었기 때문에 index.php가 모든 저장소에서 추적되고 있습니다.

개발 사이트에서 .gitignore를 업데이트하고 저장소에서 제거하면 "삭제 된 index.php"가 운영 사이트로 전달됩니다. 프로덕션 사이트에서 ITS의 index.php가 여전히 누락 된 경우gitignore, index.php를 "삭제"합니다.

그러면 모든 저장소의 모든 지점에서 모든 .gitignore에 index.php를 추가해야합니다. 그러면 rm --cached를 사용할 수 있으며 모든 것이 예상대로 작동합니다.

관련 문제