Как показать журнал git с именем ветки

Я пытаюсь использовать git log w/--decorate и --source. Но все равно не удается получить название ветки commit 2f3cb60 и d7e7776, Why?

#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 с именем ветки?

Ответ 1

$ 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 <ref>.
  • Если вам нужно какое-то символическое имя для отслеживания фиксации, используйте git name-rev <ref>.
  • Если вам нужен сценарий с оболочкой (plumbing) список всех ветвей, содержащих фиксацию, попробуйте следующее:

    commit=$(git rev-parse <ref>) # 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: поиск того, из какой ветки произошел коммит