4

Вот работаю на ветке, делаю версию и ставлю таг и он как то отделяется в сторону

введите сюда описание изображения

version 1.10, 1.11

почему так?

хотя прошлый комит 1.09 нормально выглядит

Nick Volynkin
  • 34,094
Sirop4ik
  • 10,954
  • 1
    Не похоже на git :-) – Pavel Mayorov May 04 '17 at 12:49
  • Тэг похож по своей сущности на бренч. Можно даже сделать checkout на тэг. – ilyaplot May 04 '17 at 12:50
  • 1
    @ilyaplot бранч как бы тоже не должен создавать отдельного коммита – Pavel Mayorov May 04 '17 at 12:51
  • Может это только инструмент ваш так отображает? Что в git log к примеру? – Monk May 04 '17 at 13:05
  • @PavelMayorov UI другой , но это git – Sirop4ik May 04 '17 at 13:19
  • @ilyaplot так checkout можно сделать на любой кормит по его id так они же нормально отображаются – Sirop4ik May 04 '17 at 13:19
  • @Monk нет , вот я обновил картинку в вопросе, там видно , что первый таг нормально стал – Sirop4ik May 04 '17 at 13:20
  • 1
    Выложите что-нибудь с консольным отображением. Мне лично инструмент незнаком и непонятно, что это может быть. – Monk May 04 '17 at 13:27
  • 3
    Сравните содержимое файлов .git/refs/heads/master и .git/refs/tags/1.11 – Pavel Mayorov May 04 '17 at 13:32

2 Answers2

3

Выглядит так, будто у вас есть три разных коммита с одинаковым сообщением updated gradle version code. Один из них помечен тегом 1.10, но не принадлежит никакой ветке. Другой принадлежит ветке master ⌖, а третий — ветке master (точнее символов не нашёл). Среди этих двух веток master какая-то ваша локальная (просто master), а какая-то на сервере (origin/master), но иконки этого различия не передают.

Почему такое могло произойти:

  • Вы дважды переписали один коммит с помощью команды git commit --amend.
  • Вы трижды делали коммит с одинаковым названием, а в промежутках откатывались с помощью git reset --soft HEAD^.
  • Инструмент для просмотра истории — глючный, а на самом деле там один коммит.

Что с этим делать?

  • Пользуйтесь консолью. Не пользуйтесь (глючными) GUI-инструментами.
  • Историю смотрите с помощью git log. Держите удобный alias:

    git config --global alias.lg "log --color --graph --abbrev-commit --all \
    --pretty=format:'%Cred%h%Creset -%C(yellow ul)%d%Creset %s \
    %Cgreen(%cr) %C(bold blue)<%an>%Creset'"
    

    Потом просто:

    git lg
    
  • Коммиты переберите и найдите единственный верный. Как на него переставить тег и origin/master – отдельный вопрос.

Nick Volynkin
  • 34,094
  • Так себе алиас, ничего не понятно же) Вот мой: hist = log --pretty=format:'%C(auto)%h %ad | %s%d <%an>' --graph --all --date=short – vp_arth May 04 '17 at 16:01
  • Хотя, если перенос на вторую строку не был запланирован, то норм)) – vp_arth May 04 '17 at 16:08
  • я так и пользуюсь консолью, этот UI использую чтоб наглядно видеть что где... – Sirop4ik May 04 '17 at 18:35
  • Я использовал элиас который вы предложили и действительно видно, что это не глюк UI , так и есть это лишние коммиты. Вопрос, из возможных вариантов почему такое могло произойти подходит только --amend я часто пользуюсь этой командой, но хотел спросить, что значит "вы дважды переписали один коммит"? Насколько я знаю эта команда просто добавляет изменения в предыдущий коммит, но почему она создала новые? – Sirop4ik May 05 '17 at 12:18
  • 1
    @AlekseyTimoshchenko отличная тема для нового вопроса. Я вам подробно отвечу. – Nick Volynkin May 05 '17 at 14:30
  • Вот он вопрос насчет создания коммита https://ru.stackoverflow.com/questions/662457/Почему-git-commit-amend-создает-новый-коммит – Sirop4ik May 05 '17 at 16:11
2

Попробуйте добавить любой коммит в master.

Если проблема уйдет, то виной тому ваша программа для отображения истории. Вероятно, она не умеет отображать одновременно две ссылки на один коммит. Кстати, что за программа?

Если нет - значит у вас в истории проблема, есть два похожих коммита.

  • эта поделка называется https://www.gitkraken.com/ . Я ее пропобовал - абсолютно не возможно использовать. – KoVadim May 04 '17 at 14:15
  • @KoVadim а какая вам по душе?) – Sirop4ik May 04 '17 at 14:42
  • 2
    консоль. она правильная и предсказуемая. И даже, кроссплатформенная! (git bash для винды, в линукс просто git в консоле). – KoVadim May 04 '17 at 14:49
  • @KoVadim я так и пользуюсь консолью, этот UI использую чтоб наглядно видеть что где... – Sirop4ik May 04 '17 at 18:35