Re: [請益] GIT的使用方式

作者: banjmin (HD)   2016-07-24 09:58:33
※ 引述《denru01 (阿儒)》之銘言:
: 其實已經用了GIT一陣子了,
: 常用的功能與指令也學的差不多,
: 應該可以說"懂的怎麼用GIT的功能",
: 但我一直覺得我只是在亂用一通,
: 實際應用上一團糟XD
: 所以來發文請教各位前輩遇到下述的這些問題,
: 都是怎麼處理的.
: 1. 檔案裡面有實驗的參數或是路徑.
: 比方說,
: libraryPath = '/u/homes/abc/xxx';
: speedNow = 3;
: 其它東西基本上是不變的,
: 只是這個路徑會隨著用不同電腦不同而不同,
: 而speedNow是實驗參數,
: 可能會試用不同的參數,
: 看跑出來的結果如何.
: 即使其它地方不動,
: 只要這兩個修改了,
: 又要重新commit,
: 然後另一台電腦如果pull就毀了.
: 目前試過:
: a. 單獨使用一個.ini file來存這些參數,
: 但如果這個.ini file有commit進去,
: 而又會不斷的修改內容,
: 這件事就又發生了.
: b. 寫一個.ini.example,
: 然後要用的時候複製example成.ini,
: 但不commit這個.ini.
: 但問題是,
: 萬一要加參數的話,
: 就要改很多個檔案,
: 也可能會出現.ini.example與實際使用的.ini不一致的情況.
用b,然後.example進版控
各機器cp .example .ini完成佈署
.ini用.gitignore忽略不進版控
當然,.gitignore本身要進版控
盡量整隻application會用到的環境變數都整合進同一個.ini
比較方便,佈署的時候只要cp一次就好了
: 2. Commit的頻率與log撰寫.
: 目前一直抓不到commit的節奏,
: 到底是改一個function就要commit呢?
: 還是完整的完成這個feature再commit呢?
: 有看過一個說法是說絕對不要commit不會work的東西上去,
: 但有時要改到會work要改很多地方,
: 萬一中間出事就沒救了.
: 加上我log一直都是寫的很完整,
: 都要dif一下, 一一看改了什麼,
: 再寫進log,
: 導致後來都很懶的commit,
: version control型同虛設.
: 比方說如果這次commit改了很多個檔案,
: 是要一一說每個檔案改了什麼嗎?
完成一件小事情就可以做commit了
我自己是只要commit message可以兩句話講的出目的即可
修了什麼bug?為了什麼而改了哪個小部分的程式?
commit也不要太肥,做了太多事,結果只有一個commit
然後你自己連commit message都很難寫
這時候就還不要push,用rebase去切出更小的commit再推
為的都是team member在看版控資料的時候,能從標題一眼看出你這個commit做了什麼事
要再清楚一點,就把commit message的內容寫的完整一點
這部分每個團隊通常有自己的規定
不過大方向的原則都差不多
: 3. 大檔案的存在.
: 跑程式需要一些input,
: 有些input非常巨大,
: 但沒有這些檔案又無法跑.
: 現在的做法就是,
: 只commit code檔,
: 這些input單獨包成一包,
: 每個有使用code的地方都傳一份,
: 如果input有修改,
: 就要重新打包,
: 重新上傳所有的位置.
: 非常沒有效率,
: 而且有時會忘記通知那人input data有更新了...
如果這個大檔案能透過某個script下載最新版回來,或是指定版本回來
只要這個script進版控就好
: 4. 改名與檔案結構改變.
: 有時code寫到後來會變的很亂,
: 所以會想把檔案重新分類一下,
: 並改個名,
: 這個就不太知道有什麼簡單的方法可以達成了...
我記得git應該會自己根據內容知道你做的是檔案搬遷的動作
直接git add .再git status看git有沒有認出來就好了
它會知道你只是搬遷檔案或rename
這部分應該沒有什麼問題才是
: 5. Log寫錯或是忘記commit某些檔案.
: 有時改了很多個檔案,
: 但忘記commit某一些改過的檔案,
: 或是Log寫錯.
: 麻煩有經驗的前輩指導一下,
: 謝謝~
加入所有修改跟新增的檔案,但不包括刪除的檔案
git add .
要連刪除的檔案的變更都進版控,就再補上
git add -u
這指令是修改跟刪除的變更會進版控,但是新增檔案不會
所以兩個指令剛好讓變更全進版控
這樣應該就不會有"忘記commit某一些改過的檔案"的情形
最新log寫錯用
git commit
作者: michael1436 (阿龜)   2016-07-24 12:30:00
改檔名的話可以用 git mv
作者: remmurds (Stronghold)   2016-07-24 12:50:00
commit的顆粒度真的不宜過大不然出了事很難rollback
作者: derekhsu (華麗的天下無雙)   2016-07-24 18:33:00
多commit在push前都有機會再整理

Links booklink

Contact Us: admin [ a t ] ucptt.com