2016-10-01 6 views
2

Я хочу сделать клон gythub repostitory на сервере с самообслуживанием и время от времени вытягивать последние изменения из репозитория github. В нашем клоне мы собираемся сделать некоторые экспериментальные материалы, которые никогда не покинут наш репозиторий.Поддержание клона репозитория git

Для иллюстрации; с ископаемым я бы убедиться, что наше хранилище и их хранилище имеет один и тот же идентификатор проекта, и я хотел бы сделать это:

$ cd ~/checkout/prjdir 
$ fossil pull https://their.org/prj/foo --once 

Это получить все последние коммиты, ветви, теги и т.д. А потом нажмите на сервер нашей организации:

$ fossil push 

конфликтов никогда не будет; наши изменения будут сделаны в экспериментальных филиалах, поэтому нет необходимости в каких-либо слияниях при обновлении с восходящего потока.

Я пытался повторить технологический процесс ископаемого и копировать/вставить некоторые вещи, которые кажутся актуальны и придумывают для этого первоначального клонирования:

$ git clone https://github.com/foo/bar.git 
$ cd bar 
$ git remote set-url origin https://ourbitbucket.org/foo/bar.git 
$ git push -u origin master 

Это, однако, как представляется, не принесли с ним теги (теги важны для нас).

С мерзавцем (GitHub как вверх и наш Bitbucket сервер для наших собственных тегов/филиалов):

  1. как я делаю полный клон репозитория (включая все ветки и метки)?
  2. Как только у меня есть клонированный репозиторий, как мне вытащить все последние изменения (ветви, теги включены) из восходящего потока (на github) и нажать их на наш сервер (битбакет)?
+0

Как вы знаете, что теги не были клонированы? Или вы хотели «push -tags»? – choroba

+0

Будет ли это просто исправлено, выполнив 'git fetch -tags'? – moopet

+0

@choroba Кажется, что "--tags" отсутствовал. Благодарю. – cypheratheist

ответ

2

Не изменяйте URL-адрес репозитория. Просто создайте два пульта дистанционного управления, upstream и origin.

Метки не заданы по умолчанию. Используйте --tags, чтобы нажать их.

$ git clone https://github.com/foo/bar.git 
$ cd bar 
$ git remote rename origin upstream 
$ git remote add origin https://ourbitbucket.org/foo/bar.git 
$ git push -u --tags origin master 

Всякий раз, когда вы хотите синхронизировать с вверх по течению, делать

$ git checkout master 
$ git pull upstream master 

или даже

$ git reset --hard upstream/master 

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

$ git checkout my-branch 
$ git rebase master 

или

$ git checkout my-branch 
$ git merge master 
+0

Итак, после первоначального клона я бы использовал «git pull upstream», а затем «git push -u -tags origin master»? Учтите, чтобы расширить ответ с помощью примера последовательности операций после первоначального клонирования? – cypheratheist

+0

@cypheratheist: 'clone' уже тянет, поэтому нет необходимости тянуть вверх по течению после клонирования. – choroba

 Смежные вопросы

  • Нет связанных вопросов^_^