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

2015-04-01 16:49:38 +08:00
 ming2281
####问题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
6131 次点击
所在节点    git
15 条回复
batman2010
2015-04-01 16:59:39 +08:00
celadevra
2015-04-01 17:04:46 +08:00
http://stackoverflow.com/questions/5171022/git-commit-multiple-files-but-add-messages

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

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

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

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

一次commit的粒度要掌握在能干干净净revert而不引起其它副作用
ming2281
2015-04-02 13:41:11 +08:00
@julyclyde 比如修一个bug,涉及到若干个文件,那么就可以把这些文件并成一次add和commit, 每个都写=>不累?
ming2281
2015-04-02 13:47:31 +08:00
@dofine 是的, 今天试了,方便太多
julyclyde
2015-04-02 15:31:30 +08:00
@ming2281 修一个bug,合并为一次commit,显然只写一个comment啊,为什么要给每个文件都写?每个都写就暗示这些多个修改的耦合没那么紧密,也就是说可以进一步拆分成多个commit。我之前说过,每一个commit的粒度要能干干净净revert而不引起副作用。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/180895

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX