Вопрос по git, github – Как игнорировать файлы и папки с pull-запросами к github в различных установках git clones?

3

У меня проблема с GitHub.

Я использую удаленный репозиторий на GitHub, чтобы загрузить копию на сервер для установки программного обеспечения, но каждый сервер должен внести некоторые изменения в файл с именем/www/inc/config.inc.php другие папки, такие какwww/images/ потому что каждая установка персонализирована.

Проблема возникает, когда я вызываю команду & quot;git pull& Quot; синхронизировать различные установки сервера с GitHub, чтобы получить новые изменения или версии, потому что файлwww/inc/config.inc.php изменяет его содержимое на исходное или содержимое, расположенное на GitHub.
Я хотел бы сказать, что GitHub не синхронизируетwww/inc/config.inc.php файл и/www/images папка на каждом сервере, который я запускал изначальноgit clone Команда, чтобы сделать новую установку.

Ваш Ответ

2   ответа
2

чтобы убедиться, что я правильно понимаю.

У вас есть серверы, которые должны выполнять или обновлять установки, если они существуют. У вас есть установочные файлы на github.

Для новых установок вы клонируете из github, а затем изменяете файл /www/inc/config.inc.php и папку / www / images.

Когда вы выполняете обновления, вы отправляете эти обновления на github, а затем хотите перенести эти обновления с github на ваши различные серверы, но не хотите объединять или перезаписывать локальные изменения.

Пожалуйста, прокомментируйте, если у меня неправильный сценарий.

Предполагая, что вышеупомянутое правильно, вот подход к выполнению этого:

Когда вы впервые клонируете репо на локальный сервер, создайте ветку, прежде чем вносить свои локальные изменения. Всегда сохраняйте локальный репо на созданной вами ветке.

#clone the repo
git clone git://github.com/you/yourproject.git

#create and checkout a local working branch
git checkout -b workingBranch

#make your changes to configs and other directories freely
...
#when you're done, add and commit those changes
git add .
git commit

Когда у вас есть обновление, вы хотите, чтобы вытащить на локальный компьютер

#checkout the master branch
git checkout master

#pull to get the latest code
git pull origin master

#checkout the workingBranch again
git checkout workingBranch

#rebase to get the new changes on that branch
git rebase master

Это временно откатит ваши изменения, которые вы внесли в свою ветку, получит последние коммиты из основной ветки, а затем & quot; replay & quot; ваши коммиты поверх новых изменений.

0

о серверов (/www), зафиксируйте их и отодвиньте назад, вам не нужно тянуть непосредственно из/www.
Т.е. вам не нужно/www быть Git-репо.

Вы можете создать клон этого репозитория на своем сервере и затем выполнить rsync, что вам нужно в вашей среде (все еще на вашем сервере).
Другими словами, вы держите строгое разделение между git-репо и живым деревом.
Таким образом, вы контролируетеexactly что нужно обновить.

Похожие вопросы