Клонируйте репозиторий Git, чтобы я мог обновлять его с оригиналом, но хранить свои изменения отдельно
Заранее извиняюсь за неправильное использование терминологии git...
У меня есть существующий сайт phpbb. Я хотел бы клонировать их репо, применить свои изменения и создать свое собственное репо таким образом, чтобы я мог применять обновления из исходной основной ветки phpbb по мере их создания, и поэтому я могу поддерживать свои собственные настройки. Я просто не совсем уверен, в каком порядке я должен это делать. Я даже не уверен, что то, что я хочу сделать, это вилка?
Что я хочу:
- Чтобы иметь возможность обновлять мой сайт из главной ветки phpbb на мое усмотрение.
- Чтобы мой репо был приватным (используя bitbucket).
Я знаю файлы в их основной ветке, которые мне нужно изменить, чтобы сделать сайт своим. Вот как я думаю, что это должно сработать, хотя, вероятно, не сработает, потому что я никогда не разберусь с этим, не попросив сначала помощи:
- Клонировать phpbb на мою локальную машину
- Применить мои текущие изменения
- Сделайте новый репо на BitBucket
- И вот тут я в замешательстве - я знаю, что нужно что-то делать с репозиториями remote / origin, но большинство доступных руководств, если вы знаете, как сделать стандартный fork / pull или клон, хотя я хочу, чтобы мой код, возможно, обновлялся происхождение, но я никогда не хочу обновлять их оригинальный код.
У меня есть разработчик, несколько тестов и тестовый компьютер, поэтому я бы хотел более простой способ поддерживать весь этот код в актуальном состоянии.
1 ответ
Обычно нужно держать два пульта: origin
(ваша личная вилка) и upstream
(настоящий).
- Создайте свой приватный форк и клонируйте его (он будет пустым)
- Добавьте "настоящий":
git remote add upstream <url-of-the-real-one>
- Скачать вышестоящие коммиты:
git fetch upstream
- Принудительно применить вышестоящие коммиты:
git reset --hard upstream/master
- Теперь ваш локальный репозиторий больше не пуст. Нажмите коммитов для
origin
:git push
- Применить ваши локальные правки,
git commit
их иgit push
их
Теперь, если upstream/master
изменения ветки, вам необходимо:
- Загрузите снова обновленные коммиты:
git fetch upstream
- Объединить
upstream/master
перейти на ваш местныйmaster
ветка:git merge upstream/master
- Если шаг 2 порождает конфликты, вы должны разрешить их
- Обновите свой приватный форк:
git push