2017-09-26 1 views
0

이의이 기본 프로젝트를 가정 해 봅시다 추적 디렉토리 서버 생성 된 파일을 제거합니다 서버와 같은 디렉토리 구조를 갖습니다. 파일 custom.css은 필요에 따라 편집 할 수 있도록 (ftp를 통해) 서버에 액세스 할 수있는 사람을 대상으로합니다. 그래서 푸시가 이루어질 때마다 내 로컬에있는 버전으로 custom.css 파일을 덮어 쓰지 않도록 설정해야합니다. 그래서 나는 다음과 같은 명령을 실행 :이 위치는 그대로을 떠나보다는이다에서자식은

echo css/custom.css >> .gitignore 
git rm --cached css/custom.css 
git commit -am "removed custom.css from being tracked" 
git push ssh://[email protected]:path/to/www master 

그러나이 단지 custom.css 파일을 제거합니다. git을 사용하여 서버를 구성하지 않고도 custom.css을 덮어 쓰거나 제거하지 않을 때 어떻게 설정할 수 있습니까? 로컬 git repo 구성과 관련된 솔루션을 기대하고 있습니다. 감사!

답변

0

.gitignore는 전혀 추적되지 않습니다 의미 파일을 무시하는 글로벌 방법이다. 로컬 파일을 무시해야하지만 저장소 파일을 무시하지 않으려면, 당신은 custom.css 파일이 다음 로컬 명시 적 저장소가 .git/info/excludeas described in the git documentation를 사용하여 제외 만들 커밋한다.

그런데 서버에서 파일 변경을 감시하고 커밋하기 위해 서버에서 감시자 (예 : 비정기적인 작업자 또는 일정한 간격으로 실행되는 크론 작업)를 설정하는 것이 가장 좋습니다. 이 파일은 custom.css 파일에 대한 올바른 버전 제어 기능을 제공하고 필요한 경우 롤백을 허용하므로 작성됩니다. (특정 상황에 따라 이것은 과도 할 수 있습니다.이 경우 명시 적 제외와 함께 사용하십시오.)

해당 경로로 이동하려면 git 저장소를 프로덕션과 별도의 디렉토리에 유지해야합니다 대지. 생산자 사이트를 감시하기 위해 grunt worker를 구성하십시오. 따라서 FTP 사용자가 변경하면 저장소에 커밋을 트리거합니다. 이를 달성 할 수있는 한 가지 방법은 을 grunt-git-deploy과 결합하여 grunt-contrib-watch 작업을 트리거하는 것입니다.

+0

답장을 보내 주셔서 감사하지만 서버 측 구성과 관련된 솔루션을 사용할 수 없습니다. 또한 지역의 명시 적 저장소를 포함하는 솔루션을 사용하여 exclude는 약속 한 것처럼 보였습니다. 그러나 지침을 따르면 git가 repo에있는 custom.css 파일의 버전을 배포하고 서버의 custom.css 파일을 덮어 씁니다. 웹 훅을 사용하여 제어 할 수없는 서버에 배포). 누군가 다른 사람이 서버의 ftp를 통해 편집 중이기 때문에 git push가 발생할 때 손대지 않게 custom.css 파일이 필요합니다. 희망이 명확하게 도움이됩니다. 감사합니다. –

+0

비정상적인 작업자, cron 작업 또는 특별히 서버에서 발생하지 않아도되는 작업. FTP 서버에서 변경 사항을 감시하려면 로컬 시스템에 무언가를 구성 할 수 있습니다. 가장 쉬운 방법은 프로젝트에서 파일을 제외하는 것이 아니라 커밋을 푸시하기 전에 로컬'custom.css'에 대해 FTP 버전을 비교하는 로컬 스크립트를 설정하는 것입니다. FTP 버전이 복사본과 다르면 복사본을 서버에있는 복사본으로 덮어 쓰고 변경 한 내용을 커밋하십시오. 희망은 그 말이 맞습니다. – blendenzo

+0

그래, 명확히 해줘서 고마워.하지만 좀 더 간단한 해결책을 원했어. 내 로컬 git repo에서 몇 가지 설정을 했어. 사용할 수있는 솔루션이 없다고 생각합니까? –