2012-05-27 4 views
1

매우 이상한 문제가있어이 문제에 대한 조언을 알고 싶습니다.Git ignore - 응용 프로그램 로그

가끔 REMOTE 서버로 변경 사항을 푸시하면 변경 사항이 표시되지 않습니다. 내가이 git status 수행 원격 컴퓨터에 SSH를 수행하고 내가 볼 :

수정 : 응용 프로그램/실행 /하는 Application.log

것은이 모든 디렉토리, 현재도, 특정 파일이 .gitignore에 의해 타겟팅되고 있습니다.

/nbproject/ 
/app/runtime/ 
/public_html/assets/ 
/app/runtime/application.log* 
/app/runtime/error.log* 

ftp가 직접 수행되지 않았으므로 push와 pull 만 사용되었습니다.

은 어쩌면 그들은 라이브 사이트에 app/runtime/application.log에 기록 된 것들, 그래서 application.log 저장소에있는 것과 다른, 그리고 그렇게되면 그 다음 이전 버전으로 application.log을 덮어 쓰기 때문에 자식은을 끌어 거부합니다.

같은 디렉토리에있는 여러 파일에 발생할 수 있습니다. 라이브 사이트에서 생성 될 수있는 파일, 응용 프로그램이 실행되는 순간.

제 질문은 어떻게 피할 수 있습니까? .gitignore가 왜 효과가없는 것 같습니까?

ps - 서버 훅이나 기타 자세한 정보를 제공해야하는 경우 알려 주시기 바랍니다.

답변

7

규칙을 적용하기 전에 app/runtime/application.log을 추가 한 것과 같은 소리가 개입니다. gitignore은 git의 기존 파일에 대한 인식에 영향을 미치지 않으며 새로 생성 된 파일에만 적용됩니다.

git rm --cached app/runtime/*은 git의 색인에서 로그를 제거해야합니다.

+0

로컬 및 원격 repos 모두에서이 작업을 수행해야합니까? – MEM

+1

@MEM : 두 repos에서 모두 추적되고 있다고 가정하고 있습니까? 그런 다음 로컬에서 제거하고 커밋을 수행 한 다음 원격으로 끌어 오십시오. 그게 실패하면 (아마), 리모컨에서도 제거하고 다시 병합합니다. git은 더 이상 문제없이 변경 사항을 병합해야합니다. 양쪽 모두 동일하기 때문입니다. – DCoder

+0

마지막 질문 하나 : 내 컴퓨터에서이 작업을 수행했으며 모두 정상적으로 작동하는 것 같습니다. 밀고 당기는 문제 없음.또한이 프로젝트를 밀고 당긴 다른 프로그래머는 로컬 컴퓨터에서도이 작업을 수행해야합니까? 또는 이미 처리 중이므로 아무 것도 할 필요가 없습니다. 왜냐하면 자식은 더 이상 고려하지 않기 때문입니다. 다시 한번 감사드립니다. – MEM

2

man gitignore에서 :

gitignore 파일은 자식이 무시해야 의도적으로 비 추적 파일을 지정합니다. 이미 자식에 의해 추적 된 파일은 영향을받지 않습니다.

따라서 application.log 파일이 저장소에 추가 된 경우 gitignore은 아무 작업도 수행하지 않습니다.

해결 방법은 저장소에서 이러한 파일을 제거하는 것입니다. 로그 파일을 실제로 동기화해야합니까?

git rm --cached app/runtime/application.log 

등등.

+0

@ 귀하의 게시물에 대해서도 많은 로드리고를 고맙습니다. 건배. – MEM

관련 문제