git 中如何同时为多个文件写 commit 信息 - V2EX
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
ming2281
V2EX    git

git 中如何同时为多个文件写 commit 信息

  ming2281 Apr 1, 2015 6739 views
This topic created in 4061 days ago, the information mentioned may be changed or developed.
####问题1:
假设我add了一系列文件, 我希望在写commit注释的时候,分别为每个文件写commit信息.
另外由于我经常使用Sublime,我可能希望写commit信息时弹出Sublime的窗口

我在Google时组织的关键词为git commit message for many files, 但是没有得到理想的结果.

####衍生问题1: 如何设置sublime为git的默认editor

我的关键字为 "git default editor sublime Windows7",但是得到的结果非常繁琐,在自己机器上试验也未能成功 这是一个坑吗?

####环境=>Windows7_64+git1.9.5+Sublime3
Supplement 1    Apr 1, 2015
第一个问题:
done,
总结:主要是对提交粒度的控制,如果粒度太小,每个文件都add和commit,会累死人的; 如果粒度过大,那么别人根本不知道某些文件是什么鬼;
所以粒度适中最好,属于同一类的文件则同时commit,统一写commit信息; 另外文件命名做到见名知意; 不要有强迫症,要对自己写的代码和代码注释有信心,自己能看懂,别人也能看懂

第二个问题:
一直在尝试,本来我一直使用2,在Windows平台如果命令行调用sublime,那么很自然地就会加一个path变量,然后core.editor "subl"并且我也这么做了,但是一直以来死活都是"没有这个命令",那时我很奇怪,为什么大家敲subl就好,我就不行了?
但是我一直没有深究,毕竟不是一个非常重要的问题.
今天从一个回答中才知道,原来3可以直接命令行subl,2则要使用sublime_text这个命令.=>wtf
不过切换到3就是好,实用功能很多,各种包也都支持

Thanks
Supplement 2    Apr 2, 2015
某一次修一个bug/增添一个feature, 修改涉及到若干个文件, 难道大家是针对每个被修改的文件都add和commit? =>如下, 不累?
git add A
git ci -m"xxx"
git add B
git ci -m"xxx"
===
我觉得把它们并成一次add和commit比较好吧? 改动可以使用diff
git add A B C
git ci -m"xxx"
15 replies    2015-04-02 15:31:30 +08:00
celadevra
    2
celadevra  
   Apr 1, 2015   1
http://stackoverflow.com/questions/5171022/git-commit-multiple-files-but-add-messages

Cygwin 或者 MSys 的 bash 应该也可以设置 $EDITOR 变量吧,其他版本的 git 可以设置 core.editor。
learnshare
    3
learnshare  
   Apr 1, 2015   3
commit 是一次提交动作,一个动作只能有一个注释信息,跟 commit 的文件数量无关。

你的需求建立在一个错误的 Git 用法上:

Git 是用来保存代码的版本管理工具,**版本管理**才是主要功能;
你想要给不同的文件写不同的注释信息,是因为一次提交了多处改动,这是一个错误的用法;
最好的用法是,每次只提交一处改动(改了一个 Bug,加了一个功能,重构了一个类,升级了一个 API 接口)。

每次只提交一处改动,才能保证 Git 收录了不同版本代码间最细微的差异,才有可能追溯任何改动。
你也可以写完整个项目,然后 commit 一下。这和 zip 打个包有何区别呢?
dofine
    4
dofine  
   Apr 1, 2015   1
使用 ST3 的话直接用它的 Git 插件吧,比较方便。。
gangsta
    5
gangsta  
   Apr 1, 2015   1
表达不地道啊... many files > multi-file/multiple files
重新Google下吧...
engHacker
    6
engHacker  
   Apr 1, 2015   1
到底是同时为多个文件写commit信息,还是分别为多个写信息?
标题和描述不符啊。
finian
    7
finian  
   Apr 1, 2015   1
用 stage 来组织,要 commit 的就先 stage 到一块,然后 commit。如果你是一个文件一个 commit(不建议这么搞,除非你每个文件的改动是一个逻辑上的改动),那就每次 stage 一个文件,然后 commit
lululau
    8
lululau  
   Apr 1, 2015   1
git add -i
akira
    9
akira  
   Apr 1, 2015   1
改一个文件提交一次。
ming2281
    10
ming2281  
OP
   Apr 1, 2015
@gangsta , thanks
sumhat
    11
sumhat  
   Apr 1, 2015
对于问题一,一次 commit 应该是一个原子的功能上的改动,如果你的改动可以拆成独立的互不影响的两部分,就不要并成一个 commit。一个原子的改动只需要写一份 comment 即可。
julyclyde
    12
julyclyde  
   Apr 2, 2015
lz补充的“一次提交一类”还是不对的。需要打回重学

一次commit的粒度要掌握在能干干净净revert而不引起其它副作用
ming2281
    13
ming2281  
OP
   Apr 2, 2015
@julyclyde 比如修一个bug,涉及到若干个文件,那么就可以把这些文件并成一次add和commit, 每个都写=>不累?
ming2281
    14
ming2281  
OP
   Apr 2, 2015
@dofine 是的, 今天试了,方便太多
julyclyde
    15
julyclyde  
   Apr 2, 2015
@ming2281 修一个bug,合并为一次commit,显然只写一个comment啊,为什么要给每个文件都写?每个都写就暗示这些多个修改的耦合没那么紧密,也就是说可以进一步拆分成多个commit。我之前说过,每一个commit的粒度要能干干净净revert而不引起副作用。
About     Help     Advertise     Blog     API     FAQ     Solana     3302 Online   Highest 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 61ms UTC 13:44 PVG 21:44 LAX 06:44 JFK 09:44
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86