Сброс локального просмотра удаленной ветки - PullRequest
0 голосов
/ 12 марта 2020

Предположим, у меня есть Git репо, похожее на это

* abcdefa (master) tip
* 1234567 (origin/master) base

Если кто-то другой переходит вперед origin/master с 1234567 на abcdefa, мое локальное репо не изменится, пока я git fetch. Как только я git fetch, мой местный git будет выглядеть как

* abcdefa (master, origin/master) tip
* 1234567 base

Есть ли способ отменить это git fetch? То есть можно ли заставить git снова поверить, что origin/master по-прежнему находится на 1234567, а не abcdefa, без фактической замены пульта? Ясно, что это состояние не является полностью противоречивым, так как это состояние, в котором я находился до запуска git fetch, поэтому я предполагаю, что есть какой-то способ вернуться к нему.

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

1 Ответ

2 голосов
/ 12 марта 2020

Вы можете принудительно переместить имя удаленного слежения с помощью git update-ref (которое принимает полное имя). Если включены повторные журналы (которые обычно есть), вы можете отменить последние git fetch, которые обновили origin/master с помощью:

git update-ref refs/remotes/origin/master origin/master@{1}

Возможно, лучше исправить любой инструмент, который вы используете для принятия коммита ha sh Идентификаторы или вещи, которые анализируют такие ha sh идентификаторы; тогда вы можете просто запустить:

tool origin/master@{1}

или:

tool $(git rev-parse origin/master@{1})

напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...