รายชื่อผู้รับจดหมายgit format-patch
++ git apply
สามารถสร้างผู้เขียนได้!
ในโครงการเช่นเคอร์เนล Linux ที่เป็นปะ:
สร้างการคอมมิทใหม่หนึ่งครั้งกับผู้แต่งและคอมมิทเตอร์ต่าง ๆ :
- ผู้เขียนคือผู้เขียนแพทช์
- ผู้เดินทางคือใครเป็นผู้ดูแลโครงการและผู้รวมการแก้ไข
ดูตัวอย่างนี้แพทช์ที่เลือกแบบสุ่มและการกระทำที่สอดคล้องกัน:
ส่วนต่อประสานเว็บ Git เช่น GitHub และ GitLab อาจสร้างหรือไม่สร้างผู้เขียน!
เนื่องจาก Git (Hub | Lab) มีทั้งที่เก็บอัปสตรีมและที่เก็บส้อมบนเครื่องเดียวกันพวกเขาจึงสามารถทำสิ่งใดก็ได้ที่คุณสามารถทำได้ภายในเครื่องโดยอัตโนมัติรวมถึง:
สร้างการรวมการกระทำ
ไม่สร้างผู้เขียน! = committer
เก็บ SHA หรือการคอมมิทใหม่ไว้เหมือนเดิมและสร้างการคอมมิทใหม่:
* Merge commit (committer == author == project maintainer)
|\
| * Feature commit (committer == author == contributor)
|/
* Old master (random committer and author)
ในอดีตนี่เป็นวิธีแรกที่มีให้บน GitHub
git merge --no-ff
ในประเทศนี้จะทำด้วย
สิ่งนี้สร้างสองคอมมิตต่อการร้องขอแบบดึงและเก็บทางแยกในประวัติคอมไพล์
rebase ที่ด้านบนของ master
GitHub ยังแฮ็กคอมมิทเพื่อตั้งค่าคอมมิทเตอร์ == ใครก็ตามที่กดปุ่มเวียน สิ่งนี้ไม่ได้บังคับและไม่ได้ทำโดยค่าเริ่มต้นในgit rebase
เครื่อง แต่จะให้ความรับผิดชอบแก่ผู้ดูแลโครงการ
ต้นไม้ git ตอนนี้ดูเหมือนว่า:
* Feature commit (committer == maintainer, author == contributor)
|
* Old master (random committer and author)
ซึ่งเหมือนกับของgit apply
แพทช์อีเมล
บน GitHub ปัจจุบัน:
- คุณเลือกวิธีเมื่อทำการผสานผ่านเมนูแบบเลื่อนลงที่ปุ่มผสาน
- วิธีการสามารถเปิดหรือปิดการใช้งานในการตั้งค่า repo โดยเจ้าของ
https://help.github.com/articles/about-merge-methods-on-github/
วิธีตั้งค่าคอมมิทเตอร์ของคอมมิทใหม่?
สิ่งที่ดีที่สุดที่ฉันสามารถหาได้คือการใช้ตัวแปรสภาพแวดล้อมเพื่อแทนที่คอมมิทเตอร์:
GIT_COMMITTER_NAME='a' GIT_COMMITTER_EMAIL='a' git commit --author 'a <a>'
จะรับผู้ส่งและส่งมอบวันที่ที่กำหนดได้อย่างไร
git log
เพียงแสดงให้เห็นว่าข้อมูลที่เขียนโดยเริ่มต้นใน
หากต้องการดูวันที่จ่ายเงินคุณสามารถ:
จัดรูปแบบบันทึกโดยเฉพาะสำหรับสิ่งนั้น:
git log --pretty='%cn %cd' -n1 HEAD
ที่cn
และcd
ยืนอยู่Committer Name
และCommitter Date
ใช้fuller
รูปแบบที่กำหนดไว้ล่วงหน้า:
git log --format=fuller
ดูเพิ่มเติม: วิธีกำหนดค่า 'บันทึก git' เพื่อแสดง 'วันที่ส่งมอบ'
ไปที่ระดับต่ำและแสดงข้อมูลการส่งทั้งหมด:
git cat-file -p HEAD
วิธีตั้งค่าวันที่ส่งของการส่งข้อมูลใหม่
git commit --date
ตั้งค่าวันที่ของผู้เขียนเท่านั้น: สำหรับวันที่ส่งมอบสิ่งที่ดีที่สุดที่ฉันสามารถหาได้คือกับตัวแปรสภาพแวดล้อม:
GIT_COMMITTER_DATE='2000-01-01T00:00:00+0000' git commit --date='2000-01-01T00:00:00+0000'
ดูเพิ่มเติม: ความแตกต่างระหว่างผู้แต่งและผู้เดินทางใน Git คืออะไร?
Git เก็บผู้แต่งกับผู้เดินทางภายในได้อย่างไร
ดู: รูปแบบไฟล์ของคอมมิทการคอมมิตคืออะไร?
โดยทั่วไปการคอมมิทคือไฟล์ข้อความและมันมีสองฟิลด์ที่คั่นด้วยสองบรรทัด:
author {author_name} <{author_email}> {author_date_seconds} {author_date_timezone}
committer {committer_name} <{committer_email}> {committer_date_seconds} {committer_date_timezone}
สิ่งนี้ทำให้ชัดเจนว่าทั้งสองเป็นรายการข้อมูลอิสระที่สมบูรณ์ในวัตถุกระทำ