當我開發一個新功能時,爲了獲得更好的性能,我可能會多次調整我的代碼。在100個測試時間中,我可能在時間1,時間13,時間43,...上獲得更好的性能......如何提交良好的更改並使用git保持簡單日誌
我應該在獲得更好性能時提交代碼嗎?如果是這樣的話,如果有一些小的變化(例如錯字,或者只是讓代碼變得更漂亮),我會在歷史中得到很多小的提交日誌。但是大部分時間我都無法一次完成,通常需要我很多次。
什麼是更好的方式來記錄上面的小變化?
當我開發一個新功能時,爲了獲得更好的性能,我可能會多次調整我的代碼。在100個測試時間中,我可能在時間1,時間13,時間43,...上獲得更好的性能......如何提交良好的更改並使用git保持簡單日誌
我應該在獲得更好性能時提交代碼嗎?如果是這樣的話,如果有一些小的變化(例如錯字,或者只是讓代碼變得更漂亮),我會在歷史中得到很多小的提交日誌。但是大部分時間我都無法一次完成,通常需要我很多次。
什麼是更好的方式來記錄上面的小變化?
如果你想減少一系列提交併同時保存詳細的歷史記錄,我建議使用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
|/
*
|
我喜歡有大量的小功能相關的提交,這樣你可以輕鬆地恢復提交回到以前的狀態。
當您與其他開發人員一起工作時,您必須在中央存儲庫上的pushing
時考慮公司策略。
在您的本地副本中工作時,git
讓你使用rebase
合併您提交的工具:
git rebase -i HEAD~5
將打開一個互動變基上的最後5次提交,那麼你可以選擇squash
或fixup
選項將它們合併在一起:
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
這樣你就可以push
只是一個單一的提交到中央回購。
我主張大量的小提交。只要確保每個人都是一個邏輯實體,並且信息是好的。 –