Регулярно синхронизируйте ветку с мастером, используя git rebase - PullRequest
2 голосов
/ 13 мая 2010

У меня есть Git-репозиторий с веткой, которая почти никогда не меняется (никто больше не вносит в нее свой вклад). В основном это основная ветка с удаленным кодом и файлами. Наличие этой ветки позволяет мне упаковать более компактную версию моего проекта без необходимости каждый раз вырезать код и файлы вручную.

Я использовал git rebase, чтобы поддерживать эту ветку в актуальном состоянии с мастером, но всегда получаю это предупреждение, когда пытаюсь нажать на ветку после перебазировки:

To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again.  See the 'Note about
fast-forwards' section of 'git push --help' for details.

Затем я использую git push --force, и это работает, но я чувствую, что это, вероятно, плохая практика. Я хочу, чтобы эта ветка "синхронизировалась" с мастером быстро и легко. Есть ли лучший способ справиться с этой задачей?

Обновление

См. Эту тему для полного объяснения и решения:

git rebase и git push: не вперед, зачем использовать?

1 Ответ

3 голосов
/ 13 мая 2010

Хитрость:

  • когда вы перебазируете свою «шаблонную» ветку, вы изменяете ее историю (другой SHA1), что означает, что любой толчок не будет ускоренным (нет нового SHA1 для добавления, но есть совершенно новый набор SHA1 заменить)
  • затем вы перемещаете эту ветвь в не-голое репо (которое теперь по умолчанию запрещено)

Это плохая практика:

  • если другие люди зависят от получения этой ветки (что здесь не так)
  • если вы зависите от содержимого рабочего дерева удаленного репо, в которое вы нажимаете (потому что этот контент, если он установлен для представления ветви шаблона, может не синхронизироваться с фактической веткой шаблона, которую вы только что отправили)

Если эти два пункта не являются проблемой, вы можете продолжить.
Но (или более) «правильный» способ борьбы с этим состоял бы в том, чтобы иметь промежуточное голое репо (на удаленном сервере), на которое нужно нажать, а затем извлечь / извлечь ветку шаблона из этого голого репо на другой сервер, где вы нужен этот шаблон проекта.

...