GIT Ignore и GIT Hook — файл заменяется после фиксации

Мой 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 сессии)

вар / WWW / Laravel / конфигурация / services.php

This is the modified content of this file

Так будет после коммита и толчка

вар / WWW / Laravel / конфигурация / services.php

This is the default content of this file

Я пытался добавить /config/services.php к моему .gitignore но это не похоже на работу.

.gitignore

/node_modules
/public/storage
/public/hot
/storage/*.key
/vendor
/.idea
Homestead.json
Homestead.yaml
.env
/config/services.php

Что мне делать, чтобы этот файл не заменялся каждый раз, когда я что-то фиксирую на своем сервере?

0

Решение

Что мне делать, чтобы этот файл не заменялся каждый раз, когда я что-то фиксирую на своем сервере?

У вас есть только два варианта:

  1. не проверяйте это, или
  2. не проверяйте это.

Ваш git checkout -f Команда означает «получить мне последний коммит, перезаписав все». Если у последнего коммита есть новая версия файла, это перезаписывает старую версию файла.

(Кроме того, .gitignore Файл не означает, что вы думаете, что это значит. Это не список файлов для игнорировать. Это список файлов или шаблонов именне жаловаться. Обычно самое важное, это позволяет вам объявить Git: «Да, я знаю, что они в моем рабочем дереве, а не в моем индексе; не говорите мне об этом». Это на стороне ввода — то есть, часть «не регистрируйся».)

Это приводит к общему правилу о конфигурируемом программном обеспечении, где само программное обеспечение поддерживается в Git или любой другой системе контроля версий: Не помещайте конфигурацию в систему контроля версий. конфигурация не является частью программного обеспечения.

Например, рассмотрим сам Git. Вы должны конфигурировать Git, чтобы сказать это ваш user.name а также user.email чтобы совершить коммит с вашим именем пользователя и адресом электронной почты. Теперь представьте, что Git поставляется с его конфигурационным файлом, встроенным в программное обеспечение, в котором говорится, что ваше имя пользователя Fred, а ваш адрес электронной почты [email protected], Каждый раз, когда вы обновляете Git до новой версии, это изменит ваше имя обратно на «Фред <[email protected]>»Это не очень дружелюбно, не так ли?

Git хранит вашу конфигурацию вне программного обеспечения Git. Есть, безусловно, дефолт записи конфигурации, но ничего вы установлено, хранится в другом месте. Обновление Git не касается этого. Это не относится к Git или даже к системам контроля версий: любой система, которая обеспечивает обновления не должен сохранить его конфигурацию в файле, который будет уничтожен при обновлении.

Итак, прекрати это делать.

0

Другие решения

я сделал git rm /config/services.php и повторно импортировал файл вручную. Теперь файл не заменен GIT.

0

По вопросам рекламы [email protected]