Синхронизация удаленного репозитория с помощью rebase - PullRequest
3 голосов
/ 20 августа 2009

У меня есть ситуация, когда мне придется перебазировать ветку темы к мастеру. Это нормально, это нормальный случай перебазировки и отлично работает.

Сложность заключается в том, что я пытаюсь синхронизировать этот процесс в удаленном удаленном хранилище.

, например

o--o--o origin/master
       \
        o--o origin/topic

o--o--o clone/master - tracking origin/master
       \
        o--o clone/topic - tracking origin/topic

Теперь я делаю коммит клону / мастеру, который нажимаю на origin / master, пока все хорошо.

o--o--o--n origin/master
       \
        o--o origin/topic

o--o--o--n clone/master - tracking origin/master
       \
        o--o clone/topic - tracking origin/topic

Вот где я хочу оказаться:

o--o--o--n origin/master
          \
           o--o origin/topic

o--o--o--n clone/master - tracking origin/master
          \
           o--o clone/topic - tracking origin/topic

Я просто не могу туда добраться, пожалуйста, помогите.

Рабочий процесс:

  1. Клон голого удаленного источника
  2. Внести изменения в клон / мастер
  3. Нажмите изменения в оригинале / мастере
  4. Перебазировать клон / тему либо на источник, либо на клон мастера - похоже, не имеет большого значения
  5. Теперь я хочу, чтобы источник / тема отражали ребаз, поэтому я хочу нажать, но сначала я должен потянуть, чтобы сделать клон / тему быстрой перемоткой вперед, затем я получаю объединение, в котором есть все оригинальные коммиты из клона / темы со всеми коммиты из источника / темы сверху.

Ответы [ 2 ]

3 голосов
/ 20 августа 2009

Я бы немного изменил ваш рабочий процесс, чтобы избежать push --mirror.

  1. git clone / path / to / origin # клонирует мастер
  2. git checkout - отслеживать происхождение / тему
  3. мастер проверки git
  4. git add some_new_file; git commit -m "добавил новый файл"
  5. git push origin / master
  6. git checkout topic # Местная ветка
  7. git rebase master
  8. мастер git push origin # будет обновлять мастер при возникновении
  9. git push --force origin / topic: обновит тему по origin

Вам нужно --force, потому что источник / тема изменит предка, и вы отключили быструю проверку вперед.

0 голосов
/ 20 августа 2009

Видимо ответ - нажать с флагом --mirror. Итак, теперь рабочий процесс:

  1. git clone / path / to / origin # клонирует мастер
  2. git checkout - отслеживать происхождение / тему
  3. мастер проверки git
  4. git add some_new_file; git commit -m "добавил новый файл"
  5. git push origin / master
  6. git checkout topic # Местная ветка
  7. git rebase master
  8. git push --mirror origin # Это шаг, который я ошибся, просто обычный push не достаточно хорош

Также обратите внимание, что я не делюсь с кем-либо удаленным репозиторием, но я сам перебазировку не буду справедливым для других разработчиков.

...