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

看板Soft_Job作者 (HD)時間8年前 (2016/07/24 09:58), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串2/3 (看更多)
※ 引述《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 --amend 去修改就好 如果是要改更之前commit message 用rebase -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.46.38.221 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1469325522.A.25D.html

07/24 12:30, , 1F
改檔名的話可以用 git mv
07/24 12:30, 1F

07/24 12:50, , 2F
commit的顆粒度真的不宜過大不然出了事很難rollback
07/24 12:50, 2F

07/24 18:33, , 3F
多commit在push前都有機會再整理
07/24 18:33, 3F
文章代碼(AID): #1Nb23I9T (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1Nb23I9T (Soft_Job)