Как показать удаленные ссылки / заметки /* с git log

Как показать refs/notes в git log --oneline --graph --all --decorate выход для пультов?

С помощью приведенной выше команды я вижу только свои refs/notes/foobar, но не удаленный реф.

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

4 ответа

ОБНОВЛЕНИЕ - так как комментарии показывают, что это очевидно неясно, я подчеркнул, где я ответил на вопрос.


Как и большинство команд git, git log работает на местном репо. Чтобы увидеть заметки, которые находятся на пульте, вам нужно их получить.

Вы можете сделать это вручную, сказав

git fetch origin refs/notes/*:refs/notes/*

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

Возможно, это скорее ответ на то, что OP сказал в комментарии:

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

И это не касается включения чего-либо в git logвывод в качестве исходного вопроса:

... в git log --oneline --graph --all --decorate выход...

Но ни одно из других обсуждений не упоминает ls-remote, который я считаю полезным для диагностики проблем в процессе загрузки / слияния / слияния Notes.

Например, я прошу пользователей выполнить следующее, когда кажется, что заметки не извлекают / объединяют / отправляют правильно, показывая все 3 вещи, которые обычно предназначены для синхронизации:

  • Первая команда показывает, что есть на пульте.
  • Вторая команда показывает ваши ссылки отслеживания для пульта дистанционного управления. (Я не видел здесь никаких ссылок на отслеживание ссылок, но мы сочли его полезным, позволяя нескольким людям работать над Notes.)
  • Третья команда показывает ваших местных ссылок.
MINGW64 ~/git/repo (master)
$ git ls-remote origin refs/notes/* && git for-each-ref refs/notes/origin/* && git for-each-ref refs/notes/*
b8a71bdc018808e3890800a452d3ac87a0f83261        refs/notes/releaseRollback
e15b2bdc0183f791fcaf1da3b80e5125f58bae9a        refs/notes/sourceCommits
b8a71bdc018808e3890800a452d3ac87a0f83261 commit refs/notes/origin/releaseRollback
e15b2bdc0183f791fcaf1da3b80e5125f58bae9a commit refs/notes/origin/sourceCommits
b8a71bdc018808e3890800a452d3ac87a0f83261 commit refs/notes/releaseRollback
e15b2bdc0183f791fcaf1da3b80e5125f58bae9a commit refs/notes/sourceCommits

Вы по-прежнему не можете видеть фактические значения (содержимое blob) заметок на пульте дистанционного управления, как упоминалось в других ответах, потому что их нужно получить, но используя ls-remote означает, что вы хотя бы имеете представление о том, изменился ли пульт.

Прежде всего, чтобы объяснить, каковы git notes,

git commit

Как вы знаете, каждый раз, когда вы commit код для git, git записывают текущий снимок файлов, а объект фиксации хранит дерево и любую другую дополнительную информацию в качестве метаданных фиксации. Эти метаданные затем передаются sha1sum и мы получаем идентификатор коммита.

Если позже мы попытаемся изменить коммит git commit --amend Ша-1 будет обновлен, как мы видим ниже. Содержание то же самое, но SAH-1 отличается.


git notes

Как объяснено выше, любая модификация commit воздействует на SHA-1, и именно здесь приходят на помощь git notes.

git notes позволяют нам добавлять контент для фиксации, не затрагивая SHA-1 коммита, то есть мы можем прикреплять контент к коммиту, оставляя SHA-1 неизмененным.

Как вы можете видеть, git notes не является частью содержимого фиксации и, как и любой другой контент фиксации, хранится под .git папка (локально под refs/notes/).

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

Как получить заметки?

Для получения заметок используйте следующую команду fetch со следующей refspec:

# manually fetch the notes
git fetch origin refs/notes/*:refs/notes/*

# add configuration to auto-fetch the notes every time you execute a simple
# fetch. This will result in fetching the notes every time you fetch the remote.
git config --add remote.origin.fetch +refs/notes/*:refs/notes/*

«Удаленный» в этом контексте (git-log(1)) чаще всего означает удаленные ссылки, т.е.refs/remotes/*. Другими словами:

      git log origin/main

Чтобы просмотреть журналmainфилиал, принадлежащийoriginудаленный, который вы получили локально.

Но это только для ветвей, а не для других ссылок, таких как заметки. Поэтому не существует готового решения для этой проблемы.

Единственное, что вы можете сделать, это подделать собственное удаленное пространство имен и использовать его:

      git fetch origin refs/notes/commits:refs/notes-remotes/commits
git log notes-remotes/seed
Другие вопросы по тегам