“ เขียนเมื่อ 7 วันที่แล้ว; 14 ชั่วโมงที่แล้วมุ่งมั่น” หมายถึง GitHub?


21

ฉันเห็นสิ่งนี้ในที่เก็บ GitHub นี้ :

ป้อนคำอธิบายรูปภาพที่นี่

สิ่งนี้หมายความว่า? บางสิ่งบางอย่างจะเป็น "ประพันธ์ 7 วันที่ผ่านมา" และยัง "มุ่งมั่น 14 ชั่วโมงที่ผ่านมา"?


คอมไพล์สามารถวัดการประทับเวลาระหว่างไฟล์ที่เขาแก้ไขและเมื่อเขายืนยันและผลักดันได้จริงหรือ? ฉันไม่เห็นการใช้งานสำหรับคุณลักษณะดังกล่าว แต่ที่บอกสิ่งที่ถ้อยคำที่มีความหมาย ..
เซท

@Seth นั่นคือสิ่งที่ฉันคิดในตอนแรก แต่ฉันไม่เคยได้ยินแม้แต่ Git ที่ทำอะไรกับ timestamps
เลิกทำ

@Seth Git ละเว้นการประทับเวลาของไฟล์ committer สามารถปรับเปลี่ยนการประทับเวลาเขียน on-the-fly commit --date=ใช้ Schwern อธิบายอย่างดีมาก
ADTC

@Undo ฉันหวังว่าคุณจะไม่สับสน "14 ชั่วโมงที่แล้ว" กับ "14 วันที่ผ่านมา" ... ตอนนี้มันจะแปลกจริง ๆ มีบางสิ่งที่มุ่งมั่นซึ่งเห็นได้ชัดว่ายังไม่ได้เขียนจนถึง 7 วันต่อมา ... ฉัน ' m ไม่แน่ใจว่า Git ป้องกันการตั้งค่าการประทับเวลาของผู้เขียนมากกว่าการประทับเวลาของผู้ติดต่อหรือไม่ มันอาจไม่สนใจ
ADTC

คำตอบ:


21

Git มีแนวคิดแยกต่างหากของผู้แต่ง (คนที่เขียนโค้ด) และคอมมิชชัน (คนที่คอมมิทให้กับที่เก็บ) ในทำนองเดียวกันอาจมีวันที่แตกต่างกันสำหรับทั้งสอง พวกเขามักจะเหมือนกัน

คุณต้องการให้พวกเขาแตกต่างกันเป็นหลักหากบุคคลที่เขียนรหัสหรือส่งแพทช์ไม่สามารถเข้าถึงพื้นที่เก็บข้อมูลได้เช่นเดียวกับในโครงการที่ใช้รายชื่ออีเมลสำหรับการส่งแพตช์ ในกรณีนี้คนที่มีการเข้าถึงการผลักดันจะใช้แพทช์และเรียกใช้git commitกับทั้ง--authorและ--dateสวิทช์หรือการใช้ GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL และ GIT_AUTHOR_DATE ตัวแปรสภาพแวดล้อม (การบันทึกไว้ในคอมไพล์กระทำต้นไม้

อีกกรณีหนึ่งกำลังใช้git cherry-pickหรือ git rebase ผู้เดินทางคือคนที่ทำการเลือกเชอร์รี่และผู้แต่งเป็นผู้เขียนต้นฉบับ Git จะจัดการการตั้งค่าตัวตนของผู้แต่งและวันที่ให้คุณ

git log --pretty=fullerคุณสามารถดูข้อมูลนี้ในพื้นที่เก็บข้อมูลที่มี

commit 21550561941b078ea1862b882ec89f26696ff5bb (HEAD, origin/master, origin/HEAD, master)
Author:     thiagopnts <thiagopnts@gmail.com>
AuthorDate: Tue Nov 18 14:52:49 2014 -0200
Commit:     Thiago Pontes <email@thiago.me>
CommitDate: Tue Nov 25 09:46:58 2014 -0200

    open repository url if confirmed, closes #1

1
git rebaseยังทำให้วันที่กระทำได้รับการปรับปรุงในขณะที่วันที่ผู้เขียนยังคงเหมือนเดิม
cjm

@cjm คุณพูดถูก! rebase และเชอร์รี่เลือกทั้งประพฤติเหมือนกันในส่วนนี้ นั่นทำให้รู้สึกได้ว่าการปฏิเสธสามารถถือได้ว่าเป็นเรื่องคัดสรรเชอร์รี่
Schwern

1
สำหรับการใช้งานแพทช์จากจดหมายก็มีgit amซึ่งจะใช้วันที่และผู้เขียนจากข้อความอีเมลโดยอัตโนมัติ
deltab

6

ลักษณะเช่นนี้ผสมผสานระหว่างวิธีการทำงานของ Git กับวันที่และวิธีการที่จะได้รับการอ้างอิงกับGitHub ของคำหลักปิด

Git คั่นระหว่างวันที่คอมมิทและผู้เขียน ในPro Git พวกเขาต่างกันเล็กน้อย :

ผู้เขียนคือคนที่เขียนงานมา แต่เดิมในขณะที่ผู้เดินทางคือคนที่ใช้งานล่าสุด ดังนั้นหากคุณส่งแพตช์ไปยังโครงการและหนึ่งในสมาชิกหลักใช้แพทช์คุณทั้งสองได้รับเครดิต - คุณเป็นผู้แต่งและสมาชิกหลักเป็นผู้ดำเนินการ

ดังนั้นในขณะที่รหัสตัวเองได้รับการยอมรับ / เขียน "7 วันที่ผ่านมา" (ในพื้นที่) มันไม่ได้ "นำไปใช้" หรือได้รับการแก้ไขกับรหัสจนถึง "14 ชั่วโมงที่ผ่านมา" เนื่องจากไม่เห็นในระยะไกลจนกว่าจะมีการอ้างอิง ข่าวสาร


2
ในขณะที่ฉันยังไม่ได้ทดสอบฉันไม่เชื่อว่าข้อมูลผู้แต่งถูกเพิ่มโดยคำหลักปิด Github committer และข้อมูลประจำตัวของผู้เขียนและวันที่จะถูกนำไปวางไว้ใน commit ID หาก Github เปลี่ยนแปลงสิ่งเหล่านี้มันจะเปลี่ยนการส่งมอบรหัสบนรีโมทระยะไกล ที่เก็บข้อมูลรีโมตและโลคัลจะแตกต่างกัน ผู้เขียนจะไม่สามารถผลักหรือดึงโดยไม่บังคับ
Schwern

2
การคอมมิทนั้นไม่เหมือนกับการกดไปที่รีโมต จำไว้ว่าเกือบทุกอย่างใน Git สามารถทำได้ในพื้นที่รวมถึงการกระทำ คุณสามารถคอมมิทครั้งแรก (ซึ่งให้ทั้งการประทับเวลา) และกดในภายหลัง (ซึ่งเพียงอัปโหลดการคอมมิทไปยังรีโมต แต่ไม่ให้การประทับเวลาใด ๆ ) ไม่มี 'push timestamp' เนื่องจากมันไม่สำคัญที่จะรู้ว่าเมื่อใดที่มีการส่งการกระทำ - มันสามารถผลัก (และบ่อยครั้ง) ได้และสามารถดึงได้หลายครั้ง
ADTC
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.