Подтвердить что ты не робот

Git Можно ли просмотреть рефлон удаленного?

Можно ли просмотреть лог удаленного пульта? То есть, я хочу знать, что вывод git reflog находится на другом удаленном компьютере.

Обратите внимание, что я не запрашиваю reflog ветвей удаленного отслеживания (например, origin/master), я спрашиваю, что говорит reflog на другом компьютере.

4b9b3361

Ответ 1

Ответ в основном "нет" (за исключением этой машины), потому что reflog - это журнал локальных повторных присвоений некоторого имени ref. По сути, каждый раз, когда вы запускаете git update-ref -m msg <name> <target>, регистрируется обновление... локально: .git/logs/<name> получает добавленную строку:

$ git update-ref -m foo HEAD HEAD^
$ tail -1 .git/logs/HEAD
2418b6ba8fd0289933c9351260a272b8e410867f 8d945134b0cead535d66af29c8eb4228b5dc3763 [redacted] <[redacted]> 1334106483 -0600     foo

(вещь перед сообщением, в данном случае foo, - это не пробелы, а вкладка, я расширил ее для целей SO). Концептуально все, что перемещает кончик ветки, вызывает git update-ref, чтобы сделать это (некоторые из них являются сценариями оболочки и в буквальном смысле это делают, другие просто вызывают код C, который выполняет все обновления файла)... и все в .git/logs делает up reflog.

Если в базовых протоколах git://и/или ssh://есть вещи, которые позволяют вам попасть в reflog, это будет делать это, но, насколько я знаю, это не так.

Ответ 2

В случае, если удаленный компьютер является хранилищем github,

  • Сначала используйте API событий Githubs для извлечения фиксации SHA.
    curl https://api.github.com/repos/<user>/<repo>/events

  • Определите SHA сиротского кода фиксации, который больше не существует в какой-либо ветки.

  • Далее, используйте Githubs Refs API, чтобы создать новую ветвь, указывающую на сиротскую фиксацию.

    curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X POST -d '{"ref":"refs/heads/D-commit", "sha":"<orphan-commit-id>"}' https://api.github.com/repos/<user>/<repo>/git/refs

    Замените <orphan-commit-id> в приведенной выше команде с помощью SHA, идентифицированного на шаге 2.

  • Наконец git fetch вновь созданная ветка в ваш локальный репозиторий.
    Оттуда вы можете черри-выбрать или объединить фиксацию обратно в вашу работу.

Посмотрите эту статью для фактического примера.

Ответ 3

В GitHub, если вы сделали по ошибке a git push --force на master перед тем, чтобы извлечь объединенные изменения, и в то же время объединенная ветка была удалена (да, это случилось со мной), вы можете искать запрос объединенного тяги и перейдите в раздел Commits, например:

введите описание изображения здесь

Затем вы переходите к последнему фиксации и нажимаете кнопку <> (у которой есть заголовок "Просмотреть репозиторий в этой точке истории" ).

Это приведет вас к "удаленной" точке истории. Отсюда вы можете:

  • создайте новую ветку и затем откройте новый запрос на перенос (рекомендуется, если изменение происходит из другого репозитория).
  • откройте новый запрос на перенос (рекомендуется для фиксации внутри вашего репозитория).