Git: Смотрите мой последний коммит

390

Я просто хочу видеть файлы, которые были зафиксированы в последнем коммите, точно так же, как я видел список, когда делал git commit. К сожалению ищу

git "last commit" log

в гугле меня никуда не деться. А также

git diff HEAD^..HEAD

Конечно, это не то, что мне нужно, потому что это извергает и перемены.

Дэн Розенстарк
источник
35
Спасибо, мне на самом деле просто нужно git diff HEAD^..HEAD!
Амин

Ответы:

376

Как определено в комментариях, кажется, что ОП ищет

$ git log --name-status HEAD^..HEAD

Это также очень близко к выводу, из которого вы получите svn statusили svn log -vкоторый знаком многим людям, приходящим из subversion в git.

--name-statusключ здесь; как было отмечено другими людьми в этом вопросе, вы можете использовать git log -1, git showи git diffполучить тот же вид продукции. Лично я склонен использовать git show <rev>при просмотре отдельных ревизий.

Майк Сепловиц
источник
Признаюсь, комментарии - не лучший способ прояснить мой вопрос :) спасибо MikeSep
Дэн Розенстарк
4
Я думаю, что это дает последний коммит, нет? Итак, для моего последнего я бы сделалgit log --stat --author nroose -n 1
nroose
1
И может быть сокращен и сокращен с помощью git show --name-status --oneline
jasonleonhard
Это так очевидно! Я должен был догадаться, что это что-то очень простое, так как это тот тип запросов, который происходит постоянно.
Скотт Биггс
1
В случае использования принудительного нажатия эта команда покажет вам последний патч вместо последнего (по времени) коммита ... в некоторых случаях может быть сложно
Olix
208

Используйте git show :

git show --summary

Это покажет имена созданных или удаленных файлов, но не имена измененных файлов. Команда git showподдерживает широкий спектр форматов вывода, которые отображают различную информацию о коммитах.

Грег Хьюгилл
источник
1
@jamessan git show --statблизко, но разве нет представления, где слово «измененный» или «добавленный» появляется рядом с файлом?
Дэн Розенстарк
3
Если вам нужны только имена файлов (даже меньше --stat), вы также можете посмотреть --name-statusи --name-onlyпереключиться.
Майк Сепловиц
1
@MikeSep, это на самом деле то, что мне было нужно. Если ты сделаешь это ответом, я отмечу это лучшим ответом, так как для меня это было. Я используюgit log --name-status HEAD^..HEAD
Дэн Розенстарк
Это, безусловно, самое простое решение из предложенных.
Мэтью
44

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

git log -1

Чтобы увидеть последние 2 коммита

git log -2

так далее....

Ахмед Аль Бермави
источник
1
Но в вопросе говорилось: «... хочу увидеть файлы, которые были зафиксированы в последнем коммите» .
Питер Мортенсен
42

Безусловно самая простая команда для этого:

git show --name-only

Поскольку он перечисляет только файлы в последнем коммите и не дает вам всей полноты

Пример вывода:

commit  fkh889hiuhb069e44254b4925d2b580a602
Author: Kylo Ren <Kylo@darkside.empire.gov>
Date:   Sat May 4 16:50:32 2168 -0700

Changed shield frequencies to prevent Millennium Falcon landing

 www/controllers/landing_ba_controller.js             
 www/controllers/landing_b_controller.js            
 www/controllers/landing_bp_controller.js          
 www/controllers/landing_h_controller.js          
 www/controllers/landing_w_controller.js  
 www/htdocs/robots.txt                        
 www/htdocs/templates/shields_FAQ.html       
nickhar
источник
7
Рассмотрим --name-statusвместо --name-only.
Acumenus
5
Вот в чем проблема ... империя использует php для защиты сети!
Птим
3
Лучший пример, который я видел на stackoverflow! «Это не те коммиты, которые вы ищете».
Скотт Биггс
22
git log -1 --name-status

Работает ли для меня.

micrub
источник
21

Чтобы увидеть последние изменения коммита

git show HEAD

Или увидеть изменения последнего последнего коммита

git show HEAD~1

А для дальнейшего просто замените «1» выше на требуемый порядковый номер коммита.

шубхам мишра
источник
15

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

Для последней фиксации, просто запустите эту команду: git log -1. Для более интересных вещей смотрите ниже -

  1. Чтобы увидеть идентификатор фиксации (контрольная сумма SHA-1), имя автора <идентификатор почты>, дату вместе со временем и сообщение о коммите -

    git log
    
  2. Чтобы увидеть еще некоторые статистические данные, такие как имена всех файлов, измененных во время этого коммита, и количество вставок / удалений. Это очень удобно при просмотре кода -

    git log --stat
    
  3. Чтобы увидеть истории коммитов в некоторых симпатичных форматах :) (Далее следуют некоторые опции предварительной сборки) -

    • Если у вас слишком много коммитов для просмотра, эта команда покажет их в аккуратной отдельной строке:

      git log --pretty=oneline
      
    • Чтобы увидеть краткие, средние, полные или даже более подробные сведения о вашем коммите, используйте следующие соответственно:

      git log --pretty=short
      git log --pretty=medium
      git log --pretty=full
      git log --pretty=fuller
      
  4. Вы даже можете использовать свой собственный формат вывода, используя formatопцию -

    git log --pretty=format:"%an, %ae - %s"
    

    где% an - имя автора,% ae - адрес электронной почты автора,% s - тема коммита и т. д.

Это может помочь вам с вашими историями коммитов. Для получения дополнительной информации нажмите здесь .

Митилеш Типкари
источник
11
$ git diff - только для имени HEAD ^ .. HEAD

или

$ git log - только для имени HEAD ^ .. HEAD
Грег Бэкон
источник
Это то, что мне нужно в значительной степени. Как насчет того, чтобы сказать, было ли оно изменено, добавлено или удалено? Может с письмом в стиле svn?
Дэн Розенстарк
1
Понял сейчас. git log --name-status HEAD^..HEAD
Дэн Розенстарк
2
Вместо этого git log ... HEAD^..HEADне проще git log ... -1 HEADили лучше git show ... HEAD?
Якуб Наребски
После просмотра нескольких сообщений Stackoverflow, это ответ, который мне нужен. Я только хотел файлы и ничего больше. Нет сводки коммита, только файлы с последнего коммита. СПАСИБО!
luckytaxi
6

git diff --stat HEAD

Это показывает тот же diffstat, что и ваш последний коммит.

Энди Магун
источник
4

Другой способ перечислить только файлы - использовать:
git diff-tree --no-commit-id --name-only -r HEAD^..HEAD
Или вы можете использовать любые два идентификатора фиксации.

Исмаил Черри
источник
Преимущества этого log?
Дэн Розенстарк
Это в основном другой способ перечисления файлов. Я обычно комбинирую это с rsync для развертывания
Исмаил Черри
0

Если вы говорите о поиске самого последнего и лучшего коммита после того, как вы выполнили git checkout какого-то более раннего коммита ( и забыли записать хэш HEAD перед выполнением проверки ), большинство из вышеперечисленного не вернет вас туда, где ты начал. git log - [some #] показывает только журнал из позиции CURRENT HEAD , которая не обязательно является самой последней фиксацией (состояние проекта). Checkout отключит ГОЛОВУ и укажет на то, что вы выписали.

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

Надеюсь это поможет.

HadziJo
источник
Спасибо, это хороший момент, но первоначальный вопрос был намного проще и уже много раз отвечал хорошо.
Дэн Розенстарк