[請益] GIT的使用方式

作者: denru01 (阿儒)   2016-07-24 04:42:25
其實已經用了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不一致的情況.
2. Commit的頻率與log撰寫.
目前一直抓不到commit的節奏,
到底是改一個function就要commit呢?
還是完整的完成這個feature再commit呢?
有看過一個說法是說絕對不要commit不會work的東西上去,
但有時要改到會work要改很多地方,
萬一中間出事就沒救了.
加上我log一直都是寫的很完整,
都要dif一下, 一一看改了什麼,
再寫進log,
導致後來都很懶的commit,
version control型同虛設.
比方說如果這次commit改了很多個檔案,
是要一一說每個檔案改了什麼嗎?
3. 大檔案的存在.
跑程式需要一些input,
有些input非常巨大,
但沒有這些檔案又無法跑.
現在的做法就是,
只commit code檔,
這些input單獨包成一包,
每個有使用code的地方都傳一份,
如果input有修改,
就要重新打包,
重新上傳所有的位置.
非常沒有效率,
而且有時會忘記通知那人input data有更新了...
4. 改名與檔案結構改變.
有時code寫到後來會變的很亂,
所以會想把檔案重新分類一下,
並改個名,
這個就不太知道有什麼簡單的方法可以達成了...
5. Log寫錯或是忘記commit某些檔案.
有時改了很多個檔案,
但忘記commit某一些改過的檔案,
或是Log寫錯.
麻煩有經驗的前輩指導一下,
謝謝~
作者: gocreating (小平)   2016-07-24 04:59:00
只要是可以用指令或是腳本產生的東西都不應該納入版控,而是應該保存source code和腳本,README再附上安裝跟使用教學其他進階用法就是學習寫出漂亮的commit message還有br
作者: ripple0129 (perry tsai)   2016-07-24 05:44:00
個人覺得沒絕對啦,工具終究是方便使用者為主,協作的話是別commit compile不會過的東西就好。
作者: Sidney0503 (Sidney0503)   2016-07-24 08:01:00
重點是要知道誰簽過commit 只要有git過就可以知道差異有git在log其實不是那麼重要commit頻率看人 基本上已unit為單位 不要沒完成的也git上去就好 好比一堆註解掉的程式碼 那會想砍人
作者: adarkair (路人)   2016-07-24 08:20:00
1.手動選擇要commit的檔案 or 未加入版控前的檔案使用ignore or 加入版控的檔案使用git update-index --skip-worktree <file>之類的指令忽略檔案更動2.可以開分支開發(參考gitflow的作法),還有沒push前是可以修改上次commit的註解
作者: doranako (真愛無限)   2016-07-24 09:58:00
參數要另外寫獨立檔案,例如in,然後有隻程式專門讀取參數檔案,參數檔案可以改成範例檔,大家開發時候需要自己手動新增參數檔案,但是該檔案git ignore
作者: blackcan (太平李榮浩)   2016-07-24 10:44:00
穩定版本不動開分支出來修改,確定沒問題再merge回去我會有個功能commit一次,就可以盡情debug,搞定後再reset回去只改該改的地方
作者: abc0922001 (中士abc)   2016-07-24 12:25:00
個人環境設定檔通常會忽略的阿
作者: final01 (牛頓運動定律)   2016-07-24 12:49:00
第一個問題根本不是版本控制的該管的...你要有script之類
作者: testPtt (測試)   2016-07-24 14:54:00
沒用過指令的路過..
作者: y3k (激流を制するは静水)   2016-07-24 15:43:00
安安 知道gitignore嗎XD
作者: yyc1217 (somo)   2016-07-24 19:26:00
1. 用.gitignore就好啦 2.你可以每改一個地方就commit要push上去前再用rebase squash成一個 這樣你開發方便其他人也方便 5.善用rebase,並且常用status和diff瀏覽
作者: changyuheng (張昱珩)   2016-07-25 01:08:00

Links booklink

Contact Us: admin [ a t ] ucptt.com