?
This document uses PHP Chinese website manual Release
git-commit-tree - 創(chuàng)建一個(gè)新的提交對(duì)象
git commit-tree <tree> [(-p <parent>)…]git commit-tree [(-p <parent>)…] [-S[<keyid>]] [(-m <message>)…] [(-F <file>)…] <tree>
這通常不是最終用戶想要直接運(yùn)行的。請(qǐng)參閱git-commit [1]。
基于提供的樹對(duì)象創(chuàng)建一個(gè)新的提交對(duì)象,并在stdout上發(fā)出新的提交對(duì)象ID。日志消息被從標(biāo)準(zhǔn)輸入讀取,除非-m
或-F
選項(xiàng)中給出。
一個(gè)提交對(duì)象可以有任意數(shù)量的父母。只有一位家長,這是一個(gè)普通的提交。擁有多個(gè)父代使得提交在多行歷史記錄之間合并。初始(根)提交沒有父母。
雖然樹表示工作目錄的特定目錄狀態(tài),但提交表示“時(shí)間”中的狀態(tài),并說明如何到達(dá)那里。
通常一個(gè)提交會(huì)標(biāo)識(shí)一個(gè)新的“HEAD”狀態(tài),盡管Git并不在乎你保存關(guān)于該狀態(tài)的注釋,但實(shí)際上我們傾向于只將結(jié)果寫入指向的文件.git/HEAD
,以便我們可以總是看看最近承諾的狀態(tài)是什么。
<tree>
現(xiàn)有的樹對(duì)象
-p <parent>
每個(gè)-p
表示一個(gè)父提交對(duì)象的ID。
-m <message>
提交日志消息中的段落。這可以不止一次給出,每個(gè)<message>成為它自己的段落。
-F <file>
從給定的文件中讀取提交日志消息。用于-
從標(biāo)準(zhǔn)輸入讀取。
-S<keyid> --gpg-sign=<keyid>
GPG標(biāo)志提交。該keyid
參數(shù)是可選的,并且默認(rèn)為提交者身份; 如果指定,它必須粘貼到選項(xiàng)沒有空格。
--no-gpg-sign
不要GPG簽名提交,以便--gpg-sign
在命令行中反饋前面給出的選項(xiàng)。
一個(gè)提交封裝:
所有父對(duì)象ID
作者姓名,電子郵件和日期
提交者名稱和電子郵件以及提交時(shí)間。雖然在命令行上提供了父對(duì)象ID,但如果設(shè)置了作者和提交者信息,則會(huì)從以下環(huán)境變量中獲取信息:GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_AUTHOR_DATE GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL GIT_COMMITTER_DATE(nb“<”,“>”和“\ n”被刪除)如果這些環(huán)境變量沒有設(shè)置(某些),則信息從配置項(xiàng)user.name和user.email中獲取,或者如果不存在,則會(huì)獲取環(huán)境變量EMAIL,或,如果沒有設(shè)置,那么系統(tǒng)用戶名和用于發(fā)送郵件的/etc/mailname
主機(jī)名(當(dāng)該文件不存在時(shí)取回并返回到全限定主機(jī)名)。從stdin讀取提交評(píng)論。如果沒有通過“<”提供更改日志條目git commit-tree
將只是等待一個(gè)輸入,并與^ D.Date formatsThe終止GIT_AUTHOR_DATE
,GIT_COMMITTER_DATE
環(huán)境變量支持以下日期格式:Git的內(nèi)部格式是<unix timestamp> <time zone offset>
,其中<unix timestamp>
是從unix新紀(jì)元的秒數(shù)。<time zone offset>
是UTC的正數(shù)或負(fù)數(shù)偏移量。例如CET(比UTC早1小時(shí))是+0100
。RFC 2822例如RFC 2822所描述的標(biāo)準(zhǔn)電子郵件格式Thu, 07 Apr 2005 22:13:13 +0200
。ISO 8601例如,ISO 8601標(biāo)準(zhǔn)規(guī)定的時(shí)間和日期2005-04-07T22:13:13
。解析器接受一個(gè)空格而不是T
字符。注意此外,日期部分可以采用以下格式:YYYY.MM.DD,MM / DD / YYYY和DD.MM.YYYY.DiscussionGit在某種程度上是字符編碼不可知。
blob對(duì)象的內(nèi)容是未解釋的字節(jié)序列。在核心層面沒有編碼翻譯。
路徑名以UTF-8標(biāo)準(zhǔn)化形式C編碼。這適用于樹對(duì)象,索引文件,ref名稱,以及命令行參數(shù),環(huán)境變量和配置文件中的路徑名.git/config
(請(qǐng)參閱git-config [1]) ,gitignore [5],gitattributes [5]和gitmodules [5])。請(qǐng)注意,核心級(jí)別的Git將路徑名稱視為非NUL字節(jié)序列,不存在路徑名稱編碼轉(zhuǎn)換(Mac和Windows除外)。因此,即使在使用傳統(tǒng)擴(kuò)展ASCII編碼的平臺(tái)和文件系統(tǒng)上,使用非ASCII路徑名也可以工作。但是,在這些系統(tǒng)上創(chuàng)建的存儲(chǔ)庫在基于UTF-8的系統(tǒng)(例如Linux,Mac,Windows)上無法正常工作,反之亦然。此外,許多基于Git的工具只是假設(shè)路徑名稱為UTF-8,并且無法正確顯示其他編碼。
提交日志消息通常以UTF-8編碼,但也支持其他擴(kuò)展ASCII編碼。這包括ISO-8859-x,CP125x和許多其他版本,但not
UTF-16/32,EBCDIC和CJK多字節(jié)編碼(GBK,Shift-JIS,Big5,EUC-x,CP9xx等)。
雖然我們鼓勵(lì)提交日志消息使用UTF-8編碼,但核心和Git瓷器都設(shè)計(jì)為不強(qiáng)制項(xiàng)目使用UTF-8。如果特定項(xiàng)目的所有參與者發(fā)現(xiàn)使用遺留編碼更方便,Git不會(huì)禁止它。但是,有幾件事要牢記。
git commit
和git commit-tree
如和果提交給它的提交日志消息看起來不像一個(gè)有效的UTF-8字符串,則會(huì)發(fā)出警告,除非您明確聲明您的項(xiàng)目使用了舊版編碼。這樣說的方式是在.git/config
文件中使用i18n.commitencoding ,如下所示:i18n commitEncoding = ISO-8859-1Commit用上述設(shè)置創(chuàng)建的對(duì)象記錄i18n.commitEncoding
其encoding
標(biāo)頭中的值。這是為了幫助稍后看到他們的其他人。缺少這個(gè)頭部意味著提交日志消息以UTF-8編碼。
2. git log
,git show
,git blame
和朋友看encoding
一個(gè)提交對(duì)象的報(bào)頭,并且嘗試除非另有規(guī)定重新代碼日志消息轉(zhuǎn)換成UTF-8。您可以i18n.logOutputEncoding
在.git/config
文件中指定所需的輸出編碼,如下所示:
i18n logOutputEncoding = ISO-8859-1
如果您沒有此配置變量,i18n.commitEncoding
則會(huì)使用該值。
請(qǐng)注意,在提交對(duì)象級(jí)別強(qiáng)制使用UTF-8時(shí),我們故意選擇不重新編寫提交日志消息,因?yàn)橹匦戮幋a為UTF-8不一定是可逆操作。
/etc/mailname