Nano Hash - криптовалюты, майнинг, программирование

войти первые 10 в git

Два вопроса:

  1. Как показать первые 10 коммитов в git от начала до конца. (нет филиала)
  2. Как указать индекс фиксации и зарегистрировать его. (показать вторую или третью)

Я знаю, что git использует parent для связывания коммита, легко регистрировать коммит от начала до конца. нравится: git log HEAD~10

Но мне нужно запросить от начала до конца, это возможно?

27.04.2012


Ответы:


1

Просто зарегистрируйте все в формате одной строки и завершите вывод:

git log  --pretty=oneline | tail -n 10 
27.04.2012
  • Здорово! Вот что я ищу. Спасибо @CharlesB. 27.04.2012
  • Или используйте git rev-list HEAD | tail -n 10, чтобы получить список из 10 идентификаторов, которые затем можно отобразить в любом удобном для вас формате (не ограничиваясь однострочным методом). 27.04.2012
  • tail, кажется, теряет красивую окраску, которую я получаю в своей консоли git. Передача такого параметра, как git log --oneline -10, как и в другом ответе, работает, как я и ожидал. 03.12.2015
  • Это явно хардкорный путь Unix, лол. Пожалуйста, смотрите ответ @kostix. 24.10.2017
  • Недостатком этого метода является то, что я могу видеть только свои отправленные коммиты. 09.01.2019
  • git log --pretty=oneline -10 будет отображаться цветами 27.11.2020

  • 2
    git log -10
    

    Покажет 10 последних коммитов, соответствующих спецификации ревизии (отсутствующая спецификация означает «все коммиты»).

    См. справочную страницу:

    git help log
    

    раздел Commit Limiting

    -<number>, -n <number>, --max-count=<number>
        Limit the number of commits to output.
    
    27.04.2012
  • просто и не зависит от наличия tail на вашей платформе. 05.10.2012
  • & не связывается с форматированием/раскраской git. Это должен быть принятый ответ x100 02.07.2016
  • Не то, что хотел оператор: он хотел first 10, а не latest. 07.11.2017
  • @ Тимо, вполне возможно, да, но вопрос, как указано, открыт для интерпретации, и многие люди, похоже, в конечном итоге голосуют за мой ответ только из-за этих открытых разногласий. Так что, хотя технически я с вами согласен, давайте оставим все как есть, я полагаю ;-) Среди технически правильных предложений мне больше всего нравится комментарий Торека к принятому ответу. 07.11.2017
  • @kostix Как показать первые 10 коммитов в git от начала до конца, насколько я понимаю, не подлежит интерпретации. Очевидно, запрашиваются первые 10 коммитов, а не последние. 03.03.2019
  • @BobbyJack, количество голосов опровергает вашу точку зрения. Я имею в виду, я пытался объяснить, что это социальная проблема. Ты не понял. Хорошо, давайте преодолеем это. 04.03.2019
  • @kostix Я согласен с тем, что многие люди неправильно интерпретировали вопрос — конечно, только ОП может объяснить, что они на самом деле имели в виду! Тем не менее, я думаю, что это очень ясно, когда они говорят, что легко регистрировать фиксацию от начала до начала — git log HEAD~10 — но мне нужно запросить от начала до конца, что им нужны самые старые 10 коммитов, а не самые новые. 05.03.2019

  • 3

    Вот мой подход,

    Чтобы получить первые 10 коммитов:

    git log -n 10
    

    -n это число

    Дополнительно Чтобы получить следующие 10 коммитов, пропустите первые 10:

    git log --skip=10 -n 10
    
    18.12.2017
  • Я думаю, что это должен быть принятый ответ. Использование tail приведет к тому, что --graph перестанет работать в журнале git. 23.10.2018
  • Это должен быть принятый ответ. работает как шарм для меня 26.02.2019
  • вы также теряете цвет шрифта на консоли, используя хвост. это правильный ответ 17.10.2019

  • 4

    Чтобы получить последние 10 коммитов:

    git log HEAD~10..HEAD
    

    Чтобы получить их в порядке от старых к новым:

    git log --reverse HEAD~10..HEAD
    

    Обратите внимание, что если есть слияния, это может показать более 10 коммитов; добавьте --first-parent, если вы хотите пройти только через первого родителя каждой ветки.

    Для получения более подробной информации см. документацию для git rev-list.


    Правка. Вы уже получили полезный ответ выше, чтобы «показать коммиты в начале истории» (опять же, см. предостережения о нескольких несвязанных DAG коммитах в репозитории). Но вы также можете сделать, например:

    git log --no-walk `git rev-list HEAD | tail -n 10`
    

    и:

    git log --no-walk `git rev-list --reverse HEAD | head -n 10`
    

    в зависимости от того, в каком порядке вы хотите получить результаты.

    27.04.2012
  • Спасибо за ваш ответ. Но мне нужны не последние 10 коммитов, а первые. Чтобы быть конкретным, если фиксация A-B-C-D-E-F-G (HEAD). Как регистрировать A-B-C и как регистрировать C по индексу 2? 27.04.2012
  • Ой! Нет никакой гарантии, что существует единственная первая фиксация, но если она есть, см. добавленную ссылку @CharlesB. 27.04.2012
  • Способ может быть рабочим. каким-то естественным образом? git log --pretty=oneline | wc -l git log HEAD~‹Число минус один или индекс› 27.04.2012
  • Спасибо за ответ. Это то, что мне нужно, чтобы избежать опций стиля «-10» в моих псевдонимах git. которые принимают числовые аргументы. 18.09.2015

  • 5

    лучший результат достигается при сочетании обоих лучших ответов:

    git log --pretty=oneline -10
    
    19.03.2019
  • Спасибо, я использую это как псевдоним git, чтобы быстро отображать последние коммиты, не заполняя терминал. . Я назвал псевдоним lkj = log --pretty=oneline --abbrev-commit -10. Теперь я понимаю, что это не отвечает на вопрос ОП, но я пришел сюда в поисках простого переключателя номеров. 27.11.2019

  • 6

    я бы использовал простую синтаксическую команду ниже;

    git log -10 --oneline
    
    11.05.2020
  • Думаю, это самый эффективный способ! 10.07.2020
  • Это должен быть правильный ответ! 04.03.2021
  • Хм, но это печатает 10 последних не первых коммитов. 07.06.2021

  • 7

    Просто запишите все в обратном порядке -1 означает список одного журнала

    git log  --reverse -1
    
    22.11.2012

    8

    Потому что... подробнее :p

    1. Как показать первые 10 коммитов в git от начала до конца. (нет филиала)
    2. Как указать индекс фиксации и зарегистрировать его. (показать вторую или третью)

    По (без ответвления) вы можете спрашивать о reflog, а не о какой-либо заданной цепочке предков. Следующее не имеет ничего общего с веткой, в которой вы находитесь.

    git log -g --pretty=oneline | tail -10

    <sha> HEAD@{###}: action: summary (old)
    <sha> HEAD@{###}: action: summary (older)
    ...
    <sha> HEAD@{###}: action: summary (oldest)
    
    • -g is --walk-reflogs Вместо того, чтобы проходить по цепочке предков коммита, пройдите записи reflog.q
    • добавьте |cut -d ' ' -f 2|tr -d ':' > log, чтобы регистрировать только индекс фиксации reflog.

    Ниже показаны самые ранние предки текущей проверенной ветки.

    git log --reverse --pretty=oneline | head -10 | cat -n

    1 <sha> summary (oldest)
    2 <sha> summary (second)
    
    • --reverse Выведите коммиты в обратном порядке.
    • Нельзя использовать просто -n 10 или -10, так как это ломает --reverse
    • cat -n добавляет номера строк (индекс фиксации?)

    17.04.2014

    9

    Если кому-то нужно больше, чем просто однострочный журнал git:

    git log --reverse | awk 'NR>1 {print last} {last=$0}; /^commit/ && ++c==11{exit}'
    

    где 11 в конце должно быть установлено на 1 больше, чем количество коммитов, которое вы хотите.

    Как указывает здесь, git log --reverse -n 10 не работает так, как вам нужно. (Я полагаю, что он должен быть некоммутативным, чтобы дать вам возможность выбрать первые 10 коммитов в обратном порядке или последние 10 коммитов ????)

    03.07.2019

    10

    Попробуйте этот аккуратный формат вывода:

    git log --date=short -10 --pretty="%C(Yellow)%h %x09 %C(reset)%ad %x09 %C(Cyan)%an: %C(reset)%s"
    

    Он будет печатать короткие строки с цветами, например: введите здесь описание изображения

    04.02.2021
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..