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       

7
Рассмотрим --name-statusвместо --name-only.
Acumenus

5
Вот в чем проблема ... империя использует php для защиты сети!
Птим

3
Лучший пример, который я видел на stackoverflow! «Это не те коммиты, которые вы ищете».
Скотт Биггс


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


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 , пока не достигнете записи, ссылающейся на оригинальный клон. Кстати, это тоже не сработает, если какие-либо коммиты были сделаны между временем, когда вы клонировали проект, и когда вы выполнили проверку. В противном случае вы можете надеяться, что все ваши коммиты на локальном компьютере находятся на сервере, а затем повторно клонировать весь проект.

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


Спасибо, это хороший момент, но первоначальный вопрос был намного проще и уже много раз отвечал хорошо.
Дэн Розенстарк
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.