Мой GIT-репозиторий находится /var/repo/myRepo.git
, Я установил крючок GIT post-receive*
скопировать файлы из моего репозитория в папку моего проекта
git --work-tree=/var/www/laravel --git-dir=/var/repo/myRepo.git checkout -f
Каждый раз, когда я фиксирую и нажимаю что-то на сервере, файл var/www/laravel/config/services.php
заменено, и модификация, которую я сделал на сервере, заменена моей локальной копией.
Например, если я вручную изменю следующий файл следующим образом на сервере (по ssh сессии)
This is the modified content of this file
Так будет после коммита и толчка
This is the default content of this file
Я пытался добавить /config/services.php
к моему .gitignore
но это не похоже на работу.
/node_modules
/public/storage
/public/hot
/storage/*.key
/vendor
/.idea
Homestead.json
Homestead.yaml
.env
/config/services.php
Что мне делать, чтобы этот файл не заменялся каждый раз, когда я что-то фиксирую на своем сервере?
Что мне делать, чтобы этот файл не заменялся каждый раз, когда я что-то фиксирую на своем сервере?
У вас есть только два варианта:
Ваш git checkout -f
Команда означает «получить мне последний коммит, перезаписав все». Если у последнего коммита есть новая версия файла, это перезаписывает старую версию файла.
(Кроме того, .gitignore
Файл не означает, что вы думаете, что это значит. Это не список файлов для игнорировать. Это список файлов или шаблонов именне жаловаться. Обычно самое важное, это позволяет вам объявить Git: «Да, я знаю, что они в моем рабочем дереве, а не в моем индексе; не говорите мне об этом». Это на стороне ввода — то есть, часть «не регистрируйся».)
Это приводит к общему правилу о конфигурируемом программном обеспечении, где само программное обеспечение поддерживается в Git или любой другой системе контроля версий: Не помещайте конфигурацию в систему контроля версий. конфигурация не является частью программного обеспечения.
Например, рассмотрим сам Git. Вы должны конфигурировать Git, чтобы сказать это ваш user.name
а также user.email
чтобы совершить коммит с вашим именем пользователя и адресом электронной почты. Теперь представьте, что Git поставляется с его конфигурационным файлом, встроенным в программное обеспечение, в котором говорится, что ваше имя пользователя Fred, а ваш адрес электронной почты [email protected]
, Каждый раз, когда вы обновляете Git до новой версии, это изменит ваше имя обратно на «Фред <[email protected]>»Это не очень дружелюбно, не так ли?
Git хранит вашу конфигурацию вне программного обеспечения Git. Есть, безусловно, дефолт записи конфигурации, но ничего вы установлено, хранится в другом месте. Обновление Git не касается этого. Это не относится к Git или даже к системам контроля версий: любой система, которая обеспечивает обновления не должен сохранить его конфигурацию в файле, который будет уничтожен при обновлении.
Итак, прекрати это делать.
я сделал git rm /config/services.php
и повторно импортировал файл вручную. Теперь файл не заменен GIT.