Git: ดูความมุ่งมั่นล่าสุดของฉัน


389

git commitผมแค่อยากจะเห็นไฟล์ที่มีความมุ่งมั่นในช่วงกระทำตรงตามที่ผมเห็นรายการเมื่อฉันได้ น่าเสียดายที่การค้นหา

git "last commit" log

ใน Google ทำให้ฉันไม่มีที่ไหนเลย และ

git diff HEAD^..HEAD

ไม่ใช่สิ่งที่ฉันต้องการแน่นอนเพราะมันพ่นความกล้าของการเปลี่ยนแปลงเช่นกัน


35
ขอบคุณจริงๆฉันแค่ต้องการgit diff HEAD^..HEAD!
Ameen

คำตอบ:


375

ตามที่กำหนดผ่านความคิดเห็นปรากฏว่า OP กำลังมองหา

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

นี่ก็ใกล้เคียงกับผลลัพธ์ที่คุณจะได้รับจากsvn statusหรือsvn log -vซึ่งหลาย ๆ คนที่มาจากการโค่นล้มไปยังคอมไพล์ก็คุ้นเคยกันดี

--name-statusเป็นกุญแจสำคัญที่นี่; เท่าที่สังเกตคนอื่น ๆ ในคำถามนี้คุณสามารถใช้git log -1, git showและgit diffที่จะได้รับในประเภทเดียวกันของเอาท์พุท โดยส่วนตัวฉันมักจะใช้git show <rev>เมื่อดูการแก้ไขรายบุคคล


ฉันยอมรับความเห็นไม่ใช่วิธีที่ดีที่สุดสำหรับฉันที่จะทำให้คำถามของฉันชัดเจนขึ้น :) ขอบคุณ MikeSep
Dan Rosenstark

4
ฉันคิดว่านี่เป็นการมอบความมุ่งมั่นครั้งสุดท้ายใช่ไหม? ดังนั้นสำหรับสุดท้ายของฉันฉันจะทำgit log --stat --author nroose -n 1
nroose

1
และสามารถย่อและย่อให้สั้นลงด้วยการแสดงคอมไพล์ - ชื่อสถานะ
ออนไลน์

เห็นได้ชัดเลย! ฉันควรเดาว่ามันเป็นอะไรที่ง่ายมากเพราะนี่เป็นคำถามที่เกิดขึ้นตลอดเวลา
Scott Biggs

1
ในกรณีของการใช้กำลังกด comand นี้จะแสดงแพทช์ล่าสุดแทนการกระทำล่าสุด (timewise) ... อาจจะยุ่งยากในการใช้งานบางกรณี
Olix

207

ใช้การแสดง git :

git show --summary

นี่จะแสดงชื่อของไฟล์ที่สร้างหรือลบ แต่ไม่ใช่ชื่อของไฟล์ที่เปลี่ยนแปลง git showคำสั่งสนับสนุนความหลากหลายของรูปแบบการส่งออกที่แสดงประเภทต่างๆของข้อมูลเกี่ยวกับการกระทำ


1
@jamessan git show --statปิดอยู่ แต่ไม่มีมุมมองที่คำว่า 'แก้ไข' หรือ 'เพิ่ม' ปรากฏถัดจากไฟล์หรือไม่
Dan Rosenstark

3
หากคุณต้องการเพียงชื่อไฟล์ (แม้แต่น้อยกว่า--stat) คุณอาจต้องการดู--name-statusและ--name-onlyสลับ
Mike Seplowitz

1
@ MikeSep นั่นคือสิ่งที่ฉันต้องการ ถ้าคุณทำให้คำตอบฉันจะทำเครื่องหมายคำตอบที่ดีที่สุดเพราะมันเป็นฉัน ฉันกำลังใช้git log --name-status HEAD^..HEAD
Dan Rosenstark

นี่คือทางออกที่ง่ายที่สุดของสิ่งที่เสนอ
แมทธิว


44

เพื่อดูความมุ่งมั่นล่าสุด

git log -1

เพื่อดูการกระทำ 2 ครั้งล่าสุด

git log -2

ฯลฯ ....


1
แต่คำถามที่กล่าวว่า"... ต้องการที่จะเห็นไฟล์ที่มีความมุ่งมั่นในช่วงกระทำ"
Peter Mortensen

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
คิวเมนตัส

5
มีปัญหาเกิดขึ้น .. จักรวรรดิใช้ php สำหรับกริดป้องกัน!
ptim

3
ตัวอย่างที่ดีที่สุดที่ฉันเคยเห็นใน stackoverflow! "นั่นไม่ใช่สิ่งที่คุณต้องการ"
Scott Biggs


21

หากต้องการดูการเปลี่ยนแปลงที่กระทำครั้งสุดท้าย

git show HEAD

หรือเพื่อดูการเปลี่ยนแปลงครั้งที่สองครั้งล่าสุด

git show HEAD~1

และสำหรับเพิ่มเติมเพียงแทนที่ '1' ในด้านบนด้วยหมายเลขลำดับการคอมมิชชันที่ต้องการ


15

หลังจากคุณคอมมิตหรือโคลน / ดึงที่เก็บหลายครั้งคุณอาจต้องการดูว่าคอมมิทใดที่ได้ทำไปแล้ว เพียงตรวจสอบวิธีแก้ปัญหาง่ายๆเหล่านี้เพื่อดูประวัติการกระทำของคุณ

git log -1สำหรับการกระทำที่ผ่านมาเพียงแค่ไฟคำสั่งนี้: สำหรับสิ่งที่น่าสนใจดูด้านล่าง -

  1. หากต้องการดูการกระทำ ID (การตรวจสอบ SHA-1), ชื่อผู้แต่ง <mail ID>, วันที่พร้อมกับเวลาและส่งข้อความ -

    git log
    
  2. หากต้องการดูสถิติเพิ่มเติมบางอย่างเช่นชื่อของไฟล์ทั้งหมดที่เปลี่ยนแปลงระหว่างการส่งและการลบ / การลบ สิ่งนี้มีประโยชน์มากในขณะที่ตรวจสอบรหัส -

    git log --stat
    
  3. เพื่อดูประวัติการกระทำในบางรูปแบบสวย :) (ตามด้วยตัวเลือก prebuild) -

    • หากคุณมีความมุ่งมั่นที่จะตรวจสอบมากเกินไปคำสั่งนี้จะแสดงพวกเขาในบรรทัดเดียวที่เรียบร้อย:

      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 log - ชื่อ HEAD เท่านั้น ^ .. HEAD

นั่นคือสิ่งที่ฉันต้องการมาก มีบางอย่างที่บอกว่ามีการดัดแปลงเพิ่มหรือลบอย่างไร อาจจะด้วยตัวอักษรสไตล์ svn?
Dan Rosenstark

1
รับทันที git log --name-status HEAD^..HEAD
Dan Rosenstark

2
แทนที่จะgit log ... HEAD^..HEADใช้ง่ายกว่าgit log ... -1 HEADหรือดีกว่าgit show ... HEADใช่ไหม
Jakub Narębski

หลังจากเรียกดูโพสต์แบบสองทางของ Stackoverflow นี่คือคำตอบที่ฉันต้องการ ฉันแค่ต้องการไฟล์และไม่มีอะไรอื่น ไม่มีการส่งข้อมูลสรุปเพียงไฟล์จากการส่งข้อมูลล่าสุด ขอขอบคุณ!
luckytaxi


4

อีกวิธีในการแสดงรายการเฉพาะไฟล์ที่จะใช้:
git diff-tree --no-commit-id --name-only -r HEAD^..HEAD
หรือคุณสามารถใช้รหัสยืนยันสองรายการก็ได้


ข้อดีของการนี้เพื่อlog?
Dan Rosenstark

มันเป็นวิธีการที่แตกต่างกันของรายการไฟล์ ฉันมักจะรวมสิ่งนี้กับ rsync สำหรับการใช้งาน
Ismail Cherri

0

หากคุณกำลังพูดถึงการค้นหาความมุ่งมั่นล่าสุดและยิ่งใหญ่ที่สุดหลังจากที่คุณทำการตรวจสอบคอมมิชชันของคอมมิชชันก่อนหน้า ( และลืมที่จะเขียนแฮชของ HEAD ก่อนดำเนินการเช็คเอาต์ ) ส่วนใหญ่ข้างต้นจะไม่นำคุณกลับไปที่ คุณเริ่ม git log - [some #]แสดงเฉพาะบันทึกจากตำแหน่งปัจจุบันของ HEADซึ่งไม่จำเป็นต้องเป็นคอมมิทสุดท้าย (สถานะของโครงการ) Checkout จะตัดการเชื่อมต่อ HEAD และชี้ไปที่สิ่งที่คุณเช็คเอาท์

คุณสามารถดูreflog คอมไพล์ทั้งหมดได้จนกว่าจะถึงรายการอ้างอิงโคลนดั้งเดิม BTW สิ่งนี้ก็จะไม่ทำงานเช่นกันหากมีการกระทำใด ๆ เกิดขึ้นระหว่างช่วงเวลาที่คุณทำการโคลนโครงการและเมื่อคุณทำการชำระเงิน มิฉะนั้นคุณสามารถหวังได้ว่าการกระทำทั้งหมดของคุณบนเครื่องโลคอลของคุณจะอยู่บนเซิร์ฟเวอร์แล้วทำการโคลนโครงการทั้งหมดอีกครั้ง

หวังว่านี่จะช่วยได้


ขอบคุณมันเป็นจุดที่ดี แต่คำถามเดิมนั้นง่ายกว่ามากและได้ตอบไปแล้วหลายครั้ง
Dan Rosenstark
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.