LINUX.ORG.RU

git показать все коммиты

 


0

1

помогите пожалуйста разобраться

у проекта есть гит-репозиторий. делаю несколько коммитов(работаю только с веткой master).

* 962706c 2014-09-20 | add file (HEAD) [sergey kalinin]
*   9c8d6fe 2014-09-20 | conflict compl. new product [sergey kalinin]

возвращаюсь назад:

git checkout 9c8d6fe

в результате

git log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short --all

выводит

*   9c8d6fe 2014-09-20 | conflict compl. new product [sergey kalinin]

я ожидал, что будет показана вся история. но коммит 962706c не виден. хотя он существует, это можно проверить командой:

git checkout 962706c

научите пожалуйста выводить ВСЮ историю


Может, попробуй какой-нибудь графической тулзой посмотреть? Хотя бы для интереса — выведет или не выведет твой коммит.

noomorph
()

А ветка master на что у тебя показывает? git rev-parse master.

Потому что у меня после тех же самых действий показывается вся история. Идея в том, что нет понятия «вся история», есть только «история, доступная из всех именованных точек» (из всех ref'ов). Т. е. master у тебя должен показывать на 962706c.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Тогда странно, почему у ТС не работает. Сейчас у себя проверил, с all всё работает.

EXL ★★★★★
()
Ответ на: комментарий от intelfx

вот показываю все предыдущие коммиты:

*   9c8d6fe 2014-09-20 | conflict compl. new product (HEAD) [sergey kalinin]
|\  
| * ec352a1 2014-09-20 | br2 (newbranch) [sergey kalinin]
| * ff3347b 2014-09-20 | br1 [sergey kalinin]
* | 458e00f 2014-09-20 | mast [sergey kalinin]
|/  
* fcbcb25 2014-09-20 | three (master) [sergey kalinin]
* 78a857d 2014-09-20 | two [sergey kalinin]
* 9e28010 2014-09-20 | first [sergey kalinin]

на самомм деле «наверху» существует ещё один коммит

git checkout 962706c

* 962706c 2014-09-20 | add file (HEAD) [sergey kalinin]
*   9c8d6fe 2014-09-20 | conflict compl. new product  [sergey kalinin]
|\  
| * ec352a1 2014-09-20 | br2 (newbranch) [sergey kalinin]
| * ff3347b 2014-09-20 | br1 [sergey kalinin]
* | 458e00f 2014-09-20 | mast [sergey kalinin]
|/  
* fcbcb25 2014-09-20 | three (master) [sergey kalinin]
* 78a857d 2014-09-20 | two [sergey kalinin]
* 9e28010 2014-09-20 | first [sergey kalinin]

prozaik
() автор топика
Ответ на: комментарий от prozaik

Да, я понимаю. А master-то на что у тебя указывает? Чтобы коммит присутствовал в git log --all, он должен быть доступен хотя бы из одной ветки или тега.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

ну ок, помогли - помечаю тегами и работаю

но с другой стороны всё таки непонятно. 962706c это часть ветки master. следовательно он доступен из неё

prozaik
() автор топика
Ответ на: комментарий от prozaik

Всё понятно. У тебя коммиты 9c8d6fe и 962706c не принадлежат ни одной из веток (т. е. они существуют ровно до тех пор, пока ты помнишь их идентификаторы — или пока не пройдёт ~две недели до автоочистки репозитория).

В общем, git checkout master; git reset --hard 962706c.

И перед тем, как что-либо коммитить, делай git status и проверяй, что в первой строчке написано не «HEAD detached at <...>», а «On branch <...>».

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 3)
Ответ на: комментарий от intelfx

то есть если я их даже помечу меткой(тегом), но при этом они не принадлежат ни одной из веток, то через 2 недели они будут удалены?

prozaik
() автор топика
Ответ на: комментарий от prozaik

Нет, при автоочистке удаляются только те объекты, которые не доступны ни из какого ref'а (ref — это, грубо говоря, ветка или тег).

Но в любом случае иметь важные (значащие) коммиты, не прикреплённые к веткам — это, скажем так, плохо.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.