Репозиторий мерзавца устанавливает для разработки от двух машин?

Я только что начал использовать мерзавца, и впечатлен различиями в рабочем процессе от SVN, но я столкнулся с одним структурным вопросом / вопросом об установке, который документация, кажется, интуитивно не объясняет, как настроить, и я задаюсь вопросом, возможно ли это даже.

Моя установка - то, что у меня есть несколько компьютеров, от которых я делаю разработку (рабочий стол и ноутбук), таким образом, чтобы более легко оставаться в синхронизации и обеспечить резервное копирование для репозитория мерзавца, я открыл "общедоступный" пустой репозиторий на своем домашнем сервере Linux, что я могу ssh в и от рабочего стола и от ноутбука. Это не действительно общедоступно, так как это требует, чтобы доступ SSH к полю добрался до.

Моя проблема возникает, когда я делаю изменения на своем рабочем столе, я могу легко продвинуть изменения в репозитории сервера (я имею mirror набор флага для origin удаленный на том репозитории), и использование gitx Я вижу, что локальные и удаленные состояния выглядят идентичными, и каждая из моих отдельных фиксаций была зарегистрирована к серверу.

Вопрос состоит в том, когда я переключаюсь на свой ноутбук, который я использую скорее нечасто, репозиторий мерзавца, там вероятно несколько фиксаций позади серверной версии и должен быть обновлен. Я начал использовать git pull для получения тех локальных изменений, а скорее, чем дубликат, весь человек фиксирует на сервере локальному репозиторию, он добавляет, что одно новое 'слияние' соглашается на локальный репозиторий, и gitx шоу, объединяющиеся в удаленном репозитории, переходят в той точке.

Есть ли команда/рабочий процесс, которая позволила бы мне обновить локальный репозиторий к точному состоянию удаленного репозитория (таким образом это, если я делаю a git push --mirror никакие данные не были бы потеряны)? Я должен был бы удалить свой локальный репозиторий каждый раз и git clone это снова каждый раз?

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

Править: Мои фиксации действительно включают перебазирование, отклоняется основного ответвления; мог это быть тем, что инициировало git pull команда для показывания слиянием? --rebase отметьте то, в чем я нуждаюсь затем?

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

  • Используйте ноутбук для инициализации репозитория мерзавца
  • Продвиньте репозиторий ноутбука к серверу (фиксируйте A),
  • Внесенный изменение и фиксировавший это на ноутбуке (ноутбук в фиксации B)
  • Настольный репозиторий сервера клонов (фиксируют A),
  • Внесите изменения на рабочем столе, и фиксация (фиксирует C, D, E, включая перебазирование ответвлений),
  • Рабочий стол продвигает к серверу (ускоренная перемотка вперед сервера к E)
  • Когда ноутбук вытягивает с сервера, результатов в слиянии (так как B не может ускоренная перемотка вперед к E).
  • Слияния ноутбука и нажатия изменяются на сервер
  • Рабочий стол теперь должен объединиться также.

Из-за того дополнительная фиксация, которая была неумышленной ошибкой newb, она привела меня думать, что это всегда будет слияние. На предложении Xentac я возвратился и нашел на ноутбуке, что сделал слияние, которое не было продвинуто к серверу, который был преступником, и после того как я получил все три действительно в синхронизации, git pull --ff (принуждение только слияний ускоренной перемотки вперед), работает просто великолепно и предупреждает меня, если что-то вне синхронизации прежде, чем сделать слияние.

5
задан MidnightLightning 31 January 2010 в 21:19
поделиться

2 ответа

Поскольку у вас есть коммиты в главной ветке ноутбука, которые не находятся в главной ветке сервера, каждый раз, когда сервер меняется, ноутбук не может просто обновить указатель главной ветки. Вот почему вы создаёте коммиты слияния.

Если вы хотите сохранить изменения, которые не хранятся на вашем сервере, а просто хранятся на вашем ноутбуке, вам потребуется git fetch, а затем git rebase origin/master. Сборка загрузит коммиты с сервера, но не изменит ваши локальные ветки, и rebase воссоздаст изменения в основной ветке вашего ноутбука поверх основной ветки сервера (origin/master).

Хотя, вероятно, было бы лучше, если бы эти коммиты не висели в воздухе. Разве они не могут быть интегрированы во всю кодовую базу, чтобы иметь только одну общую историю?

.
4
ответ дан 14 December 2019 в 19:12
поделиться

Я собирался предложить использовать флаг --ff, но на man-странице написано, что это поведение по умолчанию. Вы можете попробовать git потянуть --ff и посмотреть, имеет ли это значение.

Если вы получаете коммит слияния, это может означать, что на вашем ноутбуке есть коммиты, которых нет на сервере.

Ваш ноутбук настроен как зеркало сервера, как и ваш рабочий стол?

1
ответ дан 14 December 2019 в 19:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: