Что было бы противоположностью "git fetch"?

Если я git fetch от repo A до B, главная ветвь в B не изменяется - изменяется только remotes/origin/master, а git status напоминает мне об этом.

Но теперь я хочу сделать обратное - обновить B от A, что-то вроде нажатия от A:master до B:remotes/origin/master. Причиной этого является то, что это обновление происходит через ssh, а машина A имеет открытый ключ auth до B machine - но не наоборот.

Как я могу это сделать?

Ответ 1

git fetch A, запустите от B, сохраните все текущие ветки A в refs/remotes/A. Поскольку вы можете сделать почти все с refspecs, можно сделать то же самое для git push, но работать с A и таргетинга B.

Атрибут refspec состоит из двух частей, разделенных точкой с запятой. В первой части вы выбираете то, что хотите нажать. Здесь вам нужны все текущие ветки, поэтому это refs/heads/*.

Вторая часть - это то, где вы будете хранить их на пульте дистанционного управления; здесь вы хотите сохранить их под remotes/A/*, поэтому это refs/remotes/A/*.

Поместите его вместе, чтобы поместить все локальные ветки в соответствующие удаленные ветки с помощью этой команды:

git push --force B refs/heads/*:refs/remotes/A/*