сбросить источник до определенного коммита - PullRequest
1 голос
/ 03 февраля 2020

Я, по ошибке, выдвинул ветку 'dev' к моему 'origin / dev' в репозитории, так что теперь я хотел бы сбросить эти ветки для этого коммита 226b5cf7.

я уже пробовал это: git reset --hard 226b5cf7 (так что теперь мой dev сбрасывается на этот коммит) git pu sh --force origin 226b5cf7: dev (для сброса origin / dev, НО НЕ РАБОТАЕТ !!!)

я получаю это сообщение: remote: error: запрещение не-ускоренной пересылки ссылок / заголовков / dev (сначала вы должны потянуть) На s sh: //demadev/volume1/Git/smile.git! [удалено отклонено] 226b5cf7 -> ошибка dev (без ускоренной перемотки вперед): не удалось получить sh некоторые ссылки на 's sh: // codinera@demadev/volume1/Git/smile.git'

Ответы [ 2 ]

1 голос
/ 03 февраля 2020

я уже пробовал это: git reset --hard 226b5cf7 (так что теперь мой dev сбрасывается на этот коммит)

Это нормально, но технически не нужно. Обратите внимание, что сначала вам нужно будет git checkout dev, чтобы это повлияло на ваше имя dev.

[сопровождаемое] git push --force origin 226b5cf7:dev (для сброса origin / dev, НО НЕ РАБОТАЕТ !!!)

Это та часть, которая требуется.

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

remote: error: denying non-fast-forward refs/heads/dev (you should pull first)
To ssh://demadev/volume1/Git/smile.git
  ! [remote rejected] 226b5cf7 -> dev (non-fast-forward)
error: failed to push some refs to 'ssh://codinera@demadev/volume1/Git/smile.git'

, то это означает, что они - Git в codinera@demadev/volume1/Git/smile.git - игнорируете вашу опцию принудительного применения и все еще отказываетесь сделать запрошенное вами изменение. (Это был бы нормальный ответ на попытку без флага --force.)

Если это так, то вы не можете напрямую внести это изменение. Вам нужно будет найти человека, который имеет разрешение на внесение изменений, внесите изменения. Это может включать вход в систему на компьютере с именем demadev. В хранилище Git может быть receive.denyNonFastForwards, установленное на true.

0 голосов
/ 03 февраля 2020

Поскольку вы не можете сделать это из-за разрешений на удаленном узле, есть другой способ: восстановить старое состояние коммита и pu sh как новый коммит.

Эта команда будет извлеките все файлы из вашего коммита в текущий каталог.

git checkout  226b5cf7 -- .

Это не приведет к удалению вновь созданных файлов. Вам нужно найти их путем сравнения списков файлов с перезагрузкой и затем удалить вручную.

git diff 226b5cf7  --name-status

Теперь вы можете зафиксировать и pu sh.

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

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