เพียงแค่รหัส
# Set the HEAD to the old commit that we want to tag
git checkout 9fceb02
# temporarily set the date to the date of the HEAD commit, and add the tag
GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" \
git tag -a v1.2 -m"v1.2"
# set HEAD back to whatever you want it to be
git checkout master
รายละเอียด
คำตอบโดย @dkinzer สร้างแท็กที่มีวันที่เป็นวันที่ปัจจุบัน (เมื่อคุณรันgit tag
คำสั่ง) ไม่ใช่วันที่คอมมิท ความช่วยเหลือของ Git tag
มีส่วน"On Backdating Tags"ซึ่งระบุว่า:
หากคุณนำเข้าการเปลี่ยนแปลงบางอย่างจาก VCS อื่นและต้องการเพิ่มแท็กสำหรับงานสำคัญของคุณจะมีประโยชน์ที่จะสามารถระบุวันที่จะฝังภายในวัตถุแท็ก ข้อมูลดังกล่าวในวัตถุแท็กจะมีผลเช่นการเรียงลำดับของแท็กในส่วนต่อประสาน gitweb
หากต้องการกำหนดวันที่ที่ใช้ในวัตถุแท็กในอนาคตให้ตั้งค่าตัวแปรสภาพแวดล้อมGIT_COMMITTER_DATE
(ดูการอภิปรายในภายหลังเกี่ยวกับค่าที่เป็นไปได้รูปแบบที่พบบ่อยที่สุดคือ "YYYY-MM-DD HH: MM")
ตัวอย่างเช่น:
$ GIT_COMMITTER_DATE="2006-10-02 10:31" git tag -s v1.0.1
หน้า"วิธีการติดแท็กใน Git"แสดงให้เราเห็นว่าเราสามารถแยกเวลาที่ HEAD กระทำผ่าน:
git show --format=%aD | head -1
#=> Wed, 12 Feb 2014 12:36:47 -0700
เราสามารถดึงข้อมูลวันที่ที่ระบุไว้ผ่าน:
GIT_COMMITTER_DATE="$(git show 9fceb02 --format=%aD | head -1)" \
git tag -a v1.2 9fceb02 -m "v1.2"
อย่างไรก็ตามแทนที่จะทำซ้ำการกระทำสองครั้งดูเหมือนจะง่ายกว่าเพียงแค่เปลี่ยน HEAD เป็นการกระทำนั้นและใช้งานโดยนัยในทั้งสองคำสั่ง:
git checkout 9fceb02
GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" git tag -a v1.2 -m "v1.2"