Git: принудительное извлечение из определенной ветви (и предотвращение переопределения) - PullRequest
4 голосов
/ 23 мая 2011

Я знаю, что есть вопросы, плавающие вокруг относительно git pull из конкретной ветви, когда вы не указываете явное имя ветви, однако мне интересно, возможно ли форсировать ветвь по запросу, даже если пользователь действительно ли указывает другую ветвь.

Пример.

Если бы я должен был войти на работающий сервер и получить последние изменения, я бы хотел получить изменения только из ветки live.Поэтому, если бы я выполнил в оболочке следующее:

git pull origin master

Я бы хотел, чтобы git либо

  1. выдавал ошибку
  2. Проигнорируйте это и просто вытяните из ветки live на исходном пульте

Возможно ли это?Я надеюсь избежать любых ситуаций, таких как , этой , и, поскольку это базовая бизнес-система, плохо, когда дела идут плохо.

1 Ответ

3 голосов
/ 24 мая 2011

Если это ваш рабочий сервер, кажется плохой идеей разрешать кому-либо запускать произвольные команды git в этом хранилище.Любое слияние (например, с git pull) может привести к конфликтам, из-за которых ваш сервер будет поврежден.Я думаю, что люди обычно решают эту проблему, позволяя разработчикам развертывать только на производственном сервере, отправляя их в пустой репозиторий с хуком post-receive или update, который проверяет:

  1. Если refs/heads/master обновляется
  2. Если это так, проверьте его в новом каталоге с:

    GIT_WORK_TREE=/deployment/directory git checkout -f
    

Конечно, это не мешает людямлокально объединить неправильную вещь и затем передать ее на промежуточный сервер или на действующий сервер, но я думаю, что с этим ничего не поделаешь - люди просто должны проверить свой коммит должным образом (локально или на промежуточном сервере), прежде чем нажимать.

...