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