Как показать удаленные ссылки / заметки /* с 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