Получить конкретную фиксацию из удаленного репозитория git

Итак, что я в основном пытаюсь сделать, так это вытащить данный коммит (идентифицированный его SHA) из одного удаленного репо, а затем отправить его в другое удаленное репо как новую ветку (имя которой я автоматически генерирую). Исходный репозиторий может различаться, и все это одноразовые операции, поэтому я не хочу git remote add эти удаленные устройства и не хочу создавать ссылки/ветки для коммитов. И я не хочу менять ГОЛОВЫ ни в одной из моих локальных веток.

Итак, как мне просто взять данный удаленный коммит (и любой из его родительских коммитов, новых для меня) и добавить его/их в мою локальную базу данных git?

git pull неявно включает слияние или перебазирование, так что об этом не может быть и речи.

Я попробовал git fetch https://github.com/foo/bar.git 7d0969daba1fdf9d5bb9bc9a2847fd1bc1c7e426
, но это просто приводит к
error: no such remote ref 12819ad8e10e5906df5352d7d8fec1fceb1f3afc
(и да, я убедился, что этот коммит SHA существует на этом удаленном компьютере; похоже, git все равно здесь не принимает SHA).

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


person cvrebert    schedule 13.11.2014    source источник
comment
Git fetch не может получить данные с помощью SHA. Я не вижу никакого решения, кроме создания и удаления веток.   -  person Andrew C    schedule 14.11.2014
comment
@AndrewC Если вы опубликуете это как ответ, я с радостью отмечу его как принятый.   -  person cvrebert    schedule 14.11.2014
comment
Это звучит как дубликат, но я не могу найти ничего точного, поэтому я добавлю его   -  person Andrew C    schedule 14.11.2014
comment
Начиная с Git 2.5 можно получить конкретную фиксацию, см. stackoverflow.com/a/30701724/537554   -  person ryenus    schedule 29.03.2016
comment
Возможный дубликат Получить определенную фиксацию из удаленного репозитория Git   -  person Bardi Harborow    schedule 20.11.2016


Ответы (2)


Git не позволяет вам получать данные с помощью SHA. Судя по предыдущим разговорам с разработчиками список рассылки

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

person Andrew C    schedule 14.11.2014

Используйте git fetch для получения всех коммитов из вашего репозитория origin. Затем создайте ветку на нужном коммите

git branch theBranch 7d0969dab

Теперь вы можете отправить эту ветку во второе репо.

git push https://github.com/secondRepo/bar.git theBranch:theRemoteBranchNameYouWant
person Antwane    schedule 13.11.2014