Обновление git клон локальной ветки с черепахой git - PullRequest
1 голос
/ 05 мая 2020

Архитектура:

  • git репо A находится на P C A без inte rnet
  • git репо C является дубликатом gitA , созданный с помощью Git Clone и находится на hdd
  • git репо B является дубликатом gitC, созданным с помощью Git Clone и находится на pcB

Сценарий:

  • gitA - это общая папка, используемая членами команды
  • Я работаю над gitB на pcB
  • Мне нужно обновить файлы из gitB -> gitC -> gitA
  • Затем из gitA -> gitC -> gitB после разрешения конфликта с членами в gitA

Как я могу достичь вышеуказанного сценарий?

1 Ответ

1 голос
/ 06 мая 2020

Вы работаете в режиме tri angular -y.

благословенное репо - это A и общий на машине без rnet подключение. Вы работаете над B. A является источником B, и, таким образом, вы нажимаете / тянете на A из B. Это может быть достигнуто из вашего рабочего репозитория с помощью контекстного меню Tortoise, не должно быть большой проблемой.

C - это резервная копия A на машине, имеющей соединение rnet. Таким образом, C на самом деле является благословенным репо , а B является дочерним элементом C. B должен иметь возможность толкать / тянуть к C напрямую. B и C не находятся в отношениях родитель / потомок, но являются братьями и сестрами. Вы можете сказать, что C - это репозиторий на P C C, над которым работает ваш коллега Карло.

Вы хотите отправить sh на C из B. Для этого , пульт B должен быть установлен на C, а не на A. Тогда вы хотите установить sh на A из C. Перефразируя, вы хотите внести sh изменения в своего коллегу Карло, а затем сделать так, чтобы Карло опубликовал sh что-нибудь в благословенном репозитории A. Единственное, что Карло не существует.

Я бы посоветовал вам сделать C зеркальную копию A. , избегая нажатия C. C является резервной копией A, поэтому продолжайте работу и git fetch в C из A . B является рабочей копией, будет напрямую от sh к A C и напрямую вытягивать из A C. «Эй, но любые изменения, которые мы сделали для разрешения конфликтов в A, будут также и в B, я этого не хочу!» Нет, вы этого хотите, потому что рано или поздно эти изменения будут введите B.

Ваша резервная копия C должна быть git clone --mirror см. docs :

Настроить зеркало исходного репозитория . Это означает --bare. По сравнению с --bare, --mirror не только сопоставляет локальные ветки источника с локальными ветвями целевого , он сопоставляет все ссылки (включая ветки удаленного отслеживания, заметки и т. 1081 *.) И настраивает конфигурацию refspec таким образом, что все эти ссылки перезаписываются git remote update в целевом репозитории.

Используйте git remote update для pu sh ваши изменения с C к A всякий раз, когда вы можете подключить USB-накопитель (?) к A, который не имеет rnet подключения.

...