Гіт: Дивіться мою останню прихильність


389

Я просто хочу побачити файли, які були зроблені в останньому фіксації саме так, як я бачив список, коли я це робив git commit. На жаль, шукаємо

git "last commit" log

в Google мене ніде не потрапляють. І

git diff HEAD^..HEAD

Звичайно, це не те, що мені потрібно, оскільки воно також викликає кишки змін.


35
Спасибі, я насправді просто потрібна git diff HEAD^..HEAD!
Ameen

Відповіді:


375

Як визначено за допомогою коментарів, виявляється, що ОП шукає

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

Це також дуже близько до результатів, які ви отримаєте svn statusабо з svn log -vякими знайомі багато людей, які переходять від підривної роботи до git.

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


Зізнаюся, коментарі не найкращий спосіб зробити моє запитання зрозумілішим :) дякую MikeSep
Dan Rosenstark

4
Я думаю, це дає останній зобов'язання, ні? Отже, для git log --stat --author nroose -n 1
МОЕ

1
І можна скоротити і скоротити git show --name-status --oneline
Jasonleonhard

Це так очевидно! Я повинен був здогадатися, що це щось таке просте, оскільки це такий тип запитів, який відбувається постійно.
Скотт Біггс

1
У разі використання сили push цей команд покаже вам останній патч замість останнього (за часом) фіксації ... може бути складним у деяких випадках використання
Олікс

207

Використовуйте git show :

git show --summary

Це покаже назви створених або видалених файлів, але не імена змінених файлів. git showКоманда підтримує широкий спектр форматів виводу , які показують різні типи інформації про фіксацій.


1
@jamessan git show --statблизько, але чи не існує перегляду, де поруч із файлом відображається слово "модифікований" або "доданий"?
Dan Rosenstark

3
Якщо ви хочете лише назви файлів (навіть менше, ніж --stat), ви також можете переглянути --name-statusта --name-onlyпереключити.
Майк Сепловіц

1
@MikeSep, це власне те, що мені було потрібно. Якщо ви зробите це відповіддю, я позначу це найкращою відповіддю, оскільки для мене це було. Я використовуюgit log --name-status HEAD^..HEAD
Dan Rosenstark

Це, безумовно, найпростіше рішення із запропонованих.
Метью


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 для оборонної сітки!
ptim

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

або

$ git журнал - тільки ІМЕНА ГОЛА ^ .. HEAD

Це те, що мені дуже потрібно. Як щодо чогось сказати, було це змінено, додано чи видалено? Може, з листом, svn-стилі?
Dan Rosenstark

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-перевірку деякої попередньої фіксації ( і забули записати хеш HEAD перед виконанням каси ), більшість із вищезазначеного не поверне вас туди, де ви почали git log - [деякий #] показує лише журнал із СУЧАСНОЇ позиції HEAD , що не обов'язково є останньою командою (стан проекту). Checkout від'єднає ГОЛОВУ і вкаже її на те, що ви перевірили.

Ви можете переглянути весь git reflog , до досягнення запису, що посилається на оригінальний клон. До речі, це теж не спрацює, якщо будь-які комісії були зроблені між часом, коли ви клонували проект та коли ви здійснили оформлення замовлення. В іншому випадку ви можете сподіватися, що всі ваші зобов’язання на вашій локальній машині знаходяться на сервері, а потім повторно клонувати весь проект.

Сподіваюсь, це допомагає.


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