Вопрос по git-log, git-branch, git – Как показать git log с именем ветки

17

я попробуюgit log ж /--decorate а также--source опции. Но до сих пор не могу получить название ветки коммита2f3cb60 а такжеd7e7776, Зачем?

#git log 2f3cb60 --graph  --decorate --source --all --oneline
...
* | | | 1920ad5 refs/heads/gpio support gpio lib
| |/ /
|/| |
* | | 2f3cb60   2f3cb60 fix
* | | d7e7776   2f3cb60 fix
| |/
|/|
* | aa4dcfb     refs/remotes/origin/httpd support
* | cfc839d     refs/remotes/origin/httpd add folder

Как мне показать git log с именем ветки?

Ваш Ответ

1   ответ
26
$ git log --graph --decorate --oneline
* 1f3e836 (HEAD, origin/v2, v2) Change scripts to new format.
*   34d458f (origin/master, master) Merge branch 'new-shell'
|\  
| * 995ece7 (origin/new-shell) Fix index.html and add script pushing.
| * fe0615f New shell hello-world.
|/  
* fe1b1c0 Progress.
...

git log --graph --decorate --oneline должен показать вам имена коммитов, которые имеют имена.Не каждый коммит связан с именем ветки.

Помните, что имя ветки - это просто указатель на определенный коммит. Каждый коммит имеет своего родителя, поэтому один коммит может быть частью истории десятка отдельных веток.

Вы можете увидеть, какие ветви содержат коммит через.git branch --contains Если вам просто нужно какое-то символическое имя для отслеживания коммита, используйте.git name-rev

Если вам нужен shell-scriptable ("сантехника») список всех веток, содержащих коммит, попробуйте это:

commit=$(git rev-parse ) # expands hash if needed
for branch in $(git for-each-ref --format "%(refname)" refs/heads); do
  if git rev-list "$branch" | fgrep -q "$commit"; then
    echo "$branch"
  fi
done

Смотрите также:SO: Поиск ветки коммита

@JeffBowman почемуNot every commit is associated with a branch name? Насколько я понимаю, когда мы фиксируем, мы фиксируем определенную ветку, и эта ветвь должна быть той, которая связана с фиксацией, верно? Qi Zhang
Насчет простоgit branch --contains ? Что этоCOMMIT= ... for ... done сценарии оболочки делают этоgit branch --contains не? Colin D Bennett
+1 за решение проблемы с использованием только сантехники Git. Paul Whittaker
@JeffBowman Спасибо за указание на это, я замял ваш комментарий "Если вам нужен shell-scripttable ... », Было бы здорово иметь--porcelain вариант дляgit branch чтобы упростить это, но спасибо за фрагмент скрипта! Colin D Bennett

Похожие вопросы