I read once該git提交消息應該處於現在時態,例如, 「爲x添加測試」。我總是發現自己使用過去式,例如「爲x增加了測試」,這對我來說更自然。我應該在git commit消息中使用過去或現在式嗎?
Here's a recent John Resig commit示出兩個在一個消息:
調整一些更多的jQuery設置在操作測試的結果。還修復了預期測試結果的順序。
重要嗎?我應該使用哪個?
I read once該git提交消息應該處於現在時態,例如, 「爲x添加測試」。我總是發現自己使用過去式,例如「爲x增加了測試」,這對我來說更自然。我應該在git commit消息中使用過去或現在式嗎?
Here's a recent John Resig commit示出兩個在一個消息:
調整一些更多的jQuery設置在操作測試的結果。還修復了預期測試結果的順序。
重要嗎?我應該使用哪個?
現在時,命令式提交消息的優先級來自Git本身。從Git的回購Documentation/SubmittingPatches:
描述在祈使語氣,例如更改「make xyzzy do frotz」 而不是「[這個補丁]讓xyzzy做frotz」或者「[我]改變了xyzzy 做frotz」,就好像你正在給代碼庫下令以改變 它的行爲。
所以你會看到很多用這種風格寫的Git commit消息。如果你在一個團隊或開源軟件上工作,如果每個人都堅持這種風格以保持一致性,那麼這很有幫助。即使你正在開展一個私人項目,並且你是唯一一個能夠看到你的git歷史的人,但使用必要的情緒會很有幫助,因爲它確立了良好的習慣,當你與他人一起工作時,這些習慣會得到欣賞。
我認爲這是一個很好的選擇。以差異的形式考慮一下提交是什麼:一組關於如何從先前狀態轉換到新狀態的指令。正如差異表示「在此添加此行,在此刪除此行」,提交消息以定性術語說「進行此更改」。 (是的,git確實將提交存儲爲具有元數據的樹,但對於人來說,提交的重要部分是差異。) – Cascabel 2010-08-27 03:11:30
您可能會看到一個提交作爲一組指令,指導如何從前一狀態到新的狀態;但我更多地將它看作代碼演變中的一個檢查點。對我來說,提交消息是自上次提交以來對代碼做了什麼的日誌;對於日誌來說,過去時態更有意義。 如果您確實認爲提交消息應該是一組指令,那麼命令式是要走的路。我真的不想那樣想。 – karadoc 2012-06-04 14:16:11
不幸的是,我的問題是作爲這個副本關閉的,雖然我知道它是現在時完成的,因爲Git文檔中提到,所以沒有解釋爲什麼。 – oschrenk 2012-07-20 18:03:54
這取決於你。只要使用提交信息就可以了。 但是,如果不在時間和語言之間切換,則更容易。
如果你在一個團隊中發展 - 應該討論並設置它。
它有關係嗎?人們通常都足夠聰明,可以正確解釋消息,如果他們不是,你可能不應該讓他們訪問你的存儲庫!
對於[某些人](https://github.com/torvalds/linux/pull/17#issuecomment-5659970),這樣的事情相當多。 – 2012-05-14 17:31:07
@mog鏈接不會對現在和過去做任何聲明。 – ceving 2013-03-19 14:49:49
如果項目確實需要大量時間,那麼執行代碼審查和錯誤查找的人員將看到如此多的提交,以至於他們需要您提供的所有幫助和我所能提供的幫助。現在節省幾秒鐘的時間在未來會導致嚴重的頭痛,因爲沒有寫出適當的提交信息。 – 2013-05-06 07:31:35
堅持使用現在時態勢在必行,因爲
我寫了關於365git的更全面的描述。
使用命令式,現在時是一個需要一點 習慣。當我開始提及它時,遇到了 阻力。通常沿着「我所做過的提交消息記錄 」的行。但是,Git是一個分佈式版本控制系統,其中可能有很多地方可以從中進行更改。而不是編寫說明你已經完成的消息的 ;考慮這些 消息作爲應用提交將執行的操作的指示。 而不是具有與該標題提交:
Renamed the iVars and removed the common prefix.
有一個像這樣的:
Rename the iVars to remove the common prefix
告訴別人什麼申請,提交將做,而不是你做了什麼 。另外,如果你看一下你的資料庫的歷史,你會看到的Git生成的消息被寫在 這種緊張以及 - 「合併」不「合併」,「衍合」而不是「重訂」,所以在同一個 緊張的寫作不斷事情一致。它覺得很奇怪在第一,但它確實 是有意義的(可根據客戶應用推薦),並最終 變得自然。
說了這麼多 - 它是你的代碼,你的資料庫:這樣設置你 自己的指導方針,並堅持給他們。
但是,如果您決定採用這種方式,那麼
git rebase -i
與 reword選項將是一件好事情。
好吧,你已經混合了兩個不同的指南:Git開源項目和定期使用Git。提供的鏈接*沒有提到緊張*。官方的Git文檔只提到了50個字符的限制。 _Git是一個分佈式VCS,其中有許多地方可以從中獲得更改...將這些消息視爲應用提交將執行的操作的指示._ 這僅適用於幾個實際分佈項目的項目。永遠不會以這種方式手動應用99.999%的Git提交。在大多數項目中,歷史是一個變更日誌,應該是過去式。 – 2013-04-17 00:27:10
「並且應該跳過句號」 – takeshin 2013-07-16 08:28:30
您的項目應該幾乎總是使用過去時。無論如何,項目應始終使用同一時態來保持一致性和清晰度。
我明白一些爭論使用現在時的其他論據,但他們通常不適用。下面的要點是用現在時的寫法和我的回答的共同論點。
這是一個人想要使用現在時態的最正確的理由,但只有正確的項目風格。這種思考方式將所有提交視爲可選的改進或功能,並且您可以自由決定要在特定存儲庫中保留哪些提交和哪些提交。
這種說法工作,如果你正在處理一個真正的分佈式項目。如果您正在處理分佈式項目,那麼您可能正在開發一個開源項目。如果它真的分佈,它可能是一個非常大的項目。實際上,它可能是Linux內核或Git。由於Linux可能導致Git擴散並獲得普及,很容易理解爲什麼人們會將其風格視爲權威。是的,這兩個項目的風格很有意義。或者說,在一般情況下,它的工作原理與大,開源,分佈式項目。
話雖這麼說,在源代碼控制大多數項目沒有像這樣工作。對大多數存儲庫來說通常是不正確的。這是一種對提交進行思考的現代方式:Subversion(SVN)和CVS存儲庫幾乎不支持這種存儲庫檢入方式。通常情況下,一個集成分支處理過濾錯誤的簽入,但這些通常不被認爲是「可選的」或「很好的功能」。
在大多數情況下,當您向源存儲庫提交時,您正在編寫日記條目,該條目描述了此更新所做的更改,以便將來其他人更容易理解更改的原因。它通常不是一個可選的更改 - 項目中的其他人需要合併或重新綁定。你不寫日記,如「親愛的日記,今天我滿足一個男孩和他說我打招呼。」,而是你寫「我遇到一個男孩和他說打招呼我。」
最後,對於這樣的非分佈式項目,一個人讀取提交消息的時間有99.99%是用於閱讀歷史 - 歷史是以過去式讀取的。 0.01%的時間將決定他們是否應該應用此提交或將其集成到其分支/存儲庫中。
不,我向你保證,大多數登錄過版本控制系統的項目都有過去式的歷史記錄(我沒有引用,但可能是正確的,考慮到現在時態是新的自Git)。使用現在時態的「修訂」消息或提交消息在真正分佈的項目中才開始有意義 - 請參見上面的第一點。
請看第一點。一個人讀取提交信息的時間爲99.99%,用於閱讀歷史記錄 - 以過去式讀取歷史記錄。 0.01%的時間將決定他們是否應該應用此提交或將其集成到其分支/存儲庫中。 99.99%勝過0.01%。
我從來沒有見過,說使用不當緊張/語法,因爲它是短的很好的理由。對於標準的50個字符的消息,您可能平均只能保存3個字符。話雖如此,現在時平均可能會縮短几個字。
門票被寫成要麼東西,是目前(例如,當我點擊此按鈕時,應用程序顯示錯誤的行爲),或者將來需要完成的事情(例如文本需要審閱編輯)。
歷史(即提交消息)被寫爲過去完成的事情(例如,問題是是固定的)。
我今天第一次聽說關於命令式樣提交的假設偏好。對我來說,這聽起來非常不自然和怪異,我決定尋求更多的意見。我很高興看到我不是唯一一個認爲過去式對於提交信息更自然的人。 :) – karadoc 2012-05-23 00:25:27
git的自動生成合並和rebase提交消息是必要的和現在時(「合併」,而不是「合併」;「重新部署」,而不是「重新發布」),所以你可能想要在你自己的提交消息中匹配這一點以保持一致。 – mjs 2013-04-16 16:51:19
似乎不同之處在於將重點放在*軟件的變化* - 「通過執行Y來修復X」 - 或*存儲庫* - 「是否修復X.「+1是一個很好的論點,但我認爲回購通常應該把重點放在它本身而不是結果軟件上 – l0b0 2013-04-24 13:40:17
你在爲誰寫信息?那麼讀者通常是在自己擁有提交之前閱讀郵件前的消息嗎?
我認爲這裏給出的答案都是從兩個角度出發,我可能只是沒有建議每個項目都有最佳答案。分組投票可能會提出同樣多的建議。
即來概括:
主要是消息對於其他人,通常在一些點讀,他們所承擔的改變之前:什麼服用變化會做他們的現有代碼的建議。
信息主要是作爲您自己(或您的團隊)的期刊/記錄,但通常從已經承擔變化和搜索以發現所發生的事情的角度閱讀。
也許這會爲您的團隊/項目帶來動力,無論哪種方式。
這個問題***需要關閉,因爲主要是基於意見的***。只要看看[命令式](http://stackoverflow.com/questions/3580013/should-i-use-past-or-present-tense-in-git-commit-messages#comment3756224_3580764)與[過去式](http://stackoverflow.com/a/8059167/456814)已經!這就是說,我投票選擇時態,因爲它確實有助於澄清你在重寫歷史,採摘櫻桃,申請補丁等時所做的事情! – 2013-07-25 04:17:30
相似問題:http://stackoverflow.com/questions/1753808/should-commit-messages-be-written-in-present-or-past-tense – wil 2013-09-09 02:12:21
參見http://www.exquisitetweets.com/collection/ hugovk/1258 http://english.stackexchange.com/q/6602/9001 http://programmers.stackexchange.com/q/56031/25708 http://programmers.stackexchange.com/q/157590/25708 http: //stackoverflow.com/q/1753808/724176 – Hugo 2014-06-18 06:32:25