2014-01-09 26 views
2

當我開發一個新功能時,爲了獲得更好的性能,我可能會多次調整我的代碼。在100個測試時間中,我可能在時間1,時間13,時間43,...上獲得更好的性能......如何提交良好的更改並使用git保持簡單日誌

我應該在獲得更好性能時提交代碼嗎?如果是這樣的話,如果有一些小的變化(例如錯字,或者只是讓代碼變得更漂亮),我會在歷史中得到很多小的提交日誌。但是大部分時間我都無法一次完成,通常需要我很多次。

什麼是更好的方式來記錄上面的小變化?

+3

我主張大量的小提交。只要確保每個人都是一個邏輯實體,並且信息是好的。 –

回答

3

如果你想減少一系列提交併同時保存詳細的歷史記錄,我建議使用feature branch + squash方法。以下是一個示例:

假設您在master分支上沒有本地更改。

首先創建一個特性分支

$ git checkout -b tuning 

然後進行調優commiting每個相關步

... small change ... 
$ git commit -am "Time 1" 

... small change ... 
$ git commit -am "Time 2" 

... small change ... 
$ git commit -am "Time 3" 

... 

現在的歷史看起來像這樣

* (tuning) Time 3 
| 
* Time 2 
| 
* Time 1 
| 
* (master) 

接下來創建一個臨時黨支部和將所有更改壓縮到master分支上的單個提交。這是通過重新設置保留本地內容和git索引(--soft)的原始主分支,然後檢查master分支並然後進入它。

git checkout -b tmp 
git reset --soft master 
git checkout master 
git commit -m "Tuned (see tuning branch for more details)" 
git branch -D tmp 

現在你上了master分支合併爲單一提交併在此整個歷史上tuning分支提交。

* (master) Tuned (see tuning branch for more details) 
| 
| * (tuning) Time 3 
| | 
| * Time 2 
| | 
| * Time 1 
|/
* 
| 
0

我喜歡有大量的小功能相關的提交,這樣你可以輕鬆地恢復提交回到以前的狀態。

當您與其他開發人員一起工作時,您必須在中央存儲庫上的pushing時考慮公司策略。

在您的本地副本中工作時,git讓你使用rebase合併您提交的工具:

git rebase -i HEAD~5 

將打開一個互動變基上的最後5次提交,那麼你可以選擇squashfixup選項將它們合併在一起:

# s, squash = use commit, but meld into previous commit 
# f, fixup = like "squash", but discard this commit's log message 

這樣你就可以push只是一個單一的提交到中央回購。

相關問題