Git: Son taahhüdümü görün


389

Sadece son işlemde işlenen dosyaları tam olarak listeyi gördüğümde görmek istiyorum git commit. Maalesef

git "last commit" log

Google beni hiçbir yere götürmez. Ve

git diff HEAD^..HEAD

Tabii ki değişimin cesaretini uyandırdığı için ihtiyacım olan şey bu değil.


35
Teşekkürler, aslında ihtiyacım vardı git diff HEAD^..HEAD!
Ameen

Yanıtlar:


376

Yorumlar aracılığıyla belirlendiği gibi, OP'nin

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

Bu ayrıca, alacağınız çıktıya çok yakındır svn statusya da svn log -vyıkımdan git'e gelen birçok kişinin aşina olduğu.

--name-statusburadaki anahtar; Bu soruya diğer millet tarafından da belirtildiği gibi, sen kullanabilirsiniz git log -1, git showve git diffçıkış aynı tür alır. Şahsen, git show <rev>bireysel revizyonlara bakarken kullanma eğilimindeyim .


Ben itiraf, yorum benim soru temiz yapmak için en iyi yolu değildir :) teşekkürler MikeSep
Dan Rosenstark

4
Sanırım bu son sözü veriyor, değil mi? Yani, benim için son yapardımgit log --stat --author nroose -n 1
nroose

1
Git show --name-status --oneline
jasonleonhard

Bu çok açık! Bu her zaman gerçekleşen bir tür sorgu olduğu için çok basit bir şey tahmin etmeliydim.
Scott Biggs

1
Zorla itme durumunda, bu komando size en son (zamana bağlı) taahhüt yerine son yamayı gösterecektir ... bazı kullanım durumlarında zor olabilir
Olix

207

Git show kullanın :

git show --summary

Bu, oluşturulan veya kaldırılan dosyaların adlarını gösterir, ancak değiştirilen dosyaların adlarını göstermez . git showKomut kaydedilmesini hakkında çeşitli bilgi türlerini göstermek çıktı biçimleri çok çeşitli destekler.


1
@jamessan git show --statyakın, ancak dosyanın yanında 'değiştirildi' veya 'eklendi' kelimesinin göründüğü bir görünüm yok mu?
Dan Rosenstark

3
Yalnızca dosyaların adlarını (daha da az --stat) istiyorsanız, ayrıca bakmak --name-statusve --name-onlygeçiş yapmak isteyebilirsiniz .
Mike Seplowitz

1
@MikeSep, aslında ihtiyacım olan buydu. Eğer bir cevap yaparsanız, bana en iyi yanıtı işaretlerim. Ben kullanıyorumgit log --name-status HEAD^..HEAD
Dan Rosenstark

Bu, sunulanların en basit çözümü.
Matthew


44

Son taahhüdü görmek için

git log -1

Son 2 taahhüdü görmek için

git log -2

vb....


1
Ama soru "... son işlemde kaydedilen dosyaları görmek istiyorum" dedi .
Peter Mortensen

42

Bunun için en basit komut şudur:

git show --name-only

Sadece son işlemdeki dosyaları listelediği ve size tüm cesaretleri vermediği için

Çıktıya bir örnek:

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
Düşünün --name-statusyerine --name-only.
Acumenus

5
Orada sorun var .. İmparatorluk savunma ızgara için php kullanıyor!
ptim

3
Stackoverflow'da gördüğüm en iyi örnek! "Bunlar aradığınız taahhütler değil."
Scott Biggs

22
git log -1 --name-status

Benim için çalışıyor mu.


21

Son taahhüt değişikliklerini görmek için

git show HEAD

Veya ikinci son taahhüt değişikliklerini görmek için

git show HEAD~1

Ve daha fazlası için yukarıdaki '1' yerine gerekli tamamlama sırası numarasını girin.


15

Birkaç işlem yaptıktan veya bir havuzu klonladıktan / çektikten sonra, hangi işlemlerin yapıldığını görmek isteyebilirsiniz. İşlem geçmişinizi görmek için bu basit çözümleri kontrol edin (son / son işlemden birincisine).

Son tamamlama için, sadece bu komutu ateş: git log -1. Daha ilginç şeyler için aşağıya bakın -

  1. İşleme kimliğini (SHA-1 sağlama toplamı), Yazar adını <posta kimliği>, Tarihle birlikte saati ve gönderme mesajını görmek için -

    git log
    
  2. Bu işlem sırasında değiştirilen tüm dosyaların adları ve ekleme / silme sayısı gibi daha fazla istatistik görmek için. Bu kodu incelerken çok kullanışlıdır -

    git log --stat
    
  3. Bazı güzel formatlarda taahhüt geçmişlerini görmek için :) (Bunu bazı yapım öncesi seçenekler takip eder) -

    • İncelemek için çok fazla taahhüdünüz varsa, bu komut bunları düzgün bir tek satırda gösterir:

      git log --pretty=oneline
      
    • Taahhüdünüzün kısa, orta, tam veya daha fazla ayrıntısını görmek için sırasıyla aşağıdakileri kullanın -

      git log --pretty=short
      git log --pretty=medium
      git log --pretty=full
      git log --pretty=fuller
      
  4. Hatta kendi çıkış biçiminizi kullanabilirsiniz format-

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

    burada% an - yazar adı,% ae - yazar e-postası,% s - taahhüt konusu vb.

Bu, taahhüt geçmişlerinizde size yardımcı olabilir. Daha fazla bilgi için buraya tıklayın .


11
$ git diff - sadece isim HEAD ^ .. HEAD

veya

$ git log - yalnızca ad HEAD ^ .. HEAD

İhtiyacım olan şey bu. Değiştirilmiş, eklenmiş veya silinmiş bir şey söylemeye ne dersiniz? Belki bir mektupla, svn tarzı?
Dan Rosenstark

1
Şimdi anladım. git log --name-status HEAD^..HEAD
Dan Rosenstark

2
Bunun yerine, git log ... HEAD^..HEADkullanımı daha basit git log ... -1 HEADveya daha iyi değil git show ... HEADmi?
Jakub Narębski

Birkaç Stackoverflow yayınlarına göz attıktan sonra, ihtiyacım olan cevap bu. Sadece dosyaları istedim ve başka bir şey istemedim. İşlem özeti yok, yalnızca en son işlemden alınan dosyalar. TEŞEKKÜRLER!
luckytaxi

6

git diff --stat HEAD

Bu, son taahhüdünüzle aynı diffstatı gösterir.


4

Yalnızca dosyaları listelemenin başka bir yolu da kullanmaktır:
git diff-tree --no-commit-id --name-only -r HEAD^..HEAD
Veya herhangi bir iki taahhüt kimliğini kullanabilirsiniz


bunun avantajları log?
Dan Rosenstark

Temelde dosyaları listelemenin farklı bir yoludur. Bunu genellikle dağıtım için rsync ile birleştiririm
Ismail Cherri

0

Daha önceki bazı taahhütlerin bir git kontrolünü yaptıktan sonra ( ve ödeme yapmadan önce HEAD'ın karmasını yazmayı unuttuysanız) en son ve en büyük taahhüdü bulmaktan bahsediyorsanız , yukarıdakilerin çoğu sizi nereye götürmez sen başladın. git log - [bazı #] sadece HEAD'in MEVCUT konumundan alınan günlüğü gösterir , ki bu mutlaka son taahhüt değildir (projenin durumu). Ödeme, HEAD bağlantısını kesecek ve teslim aldığınız her şeye yönlendirecektir.

Orijinal klonu referans alan girişe ulaşıncaya kadar git reflogunun tamamını görüntüleyebilirsiniz . BTW, projeyi klonladığınız zaman ile bir ödeme gerçekleştirdiğiniz zaman arasında herhangi bir işlem yapılmışsa bu da işe yaramaz. Aksi takdirde, yerel makinenizdeki tüm taahhütlerinizin sunucuda olmasını umabilir ve ardından tüm projeyi yeniden kopyalayabilirsiniz.

Bu yardımcı olur umarım.


Teşekkürler, bu iyi bir nokta ama orijinal soru çok daha basitti ve zaten birçok kez iyi cevap verdi.
Dan Rosenstark
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.