在'git commit'之前写git commit消息

我正在学习来自Perforce的Git。

据我可以告诉你必须在提交的同一步骤中写入提交信息。 还是我错过了我可能会写更早的信息,并让它挂起来,直到我准备好提交。

我非常喜欢perforce中的工作stream程,您可以随时编辑更改列表说明,然后检查是否准备就绪。 就我个人而言,我喜欢多次打开说明文档,并按照我的代码进行logging,或者我想到值得注意的事情。

可能与Git?

使用git commit查看-t <file>标志

这使您可以指定一个文件作为提交消息的基础。 编辑器仍然被调用,但至less可以使用提前创build的提交消息。

另外 ,还有另一个工作stream程,你可以使用git,可能更适合你的工作方式:

用git你可以在主线上的一个单独的分支上工作,并用自己的消息做很多小的提交。 虽然这些提交都可能无法解决您正在处理的问题,但是它们确实提供了一种使用与您在提交消息文件中更新的相同types的消息来保存工作的中间状态的方法。

一旦你准备好完成你的工作,你可以使用rebase命令并squash这些提交。 然后,您的编辑器将与您用于较小的提交的所有单个消息一起调用,然后您可以将它们一起编辑成一条消息。

这比这里听起来容易得多,而且是一个更类似git的方法。

只要你没有push你的承诺push给别人,你可以做一个git commit --amend 。 这将允许你修改你的提交,以及你的提交信息。

我发现这对于“提前和经常提交”确实有帮助,没有被一些微不足道的提交所压倒。

你可以使用这些别名:

 git config --global alias.prepare '!${EDITOR:-vi} $(git rev-parse --git-dir)/.template' git config --global alias.commitp '!git commit -F $(git rev-parse --git-dir)/.template' 

用法:

 git prepare EDITOR=nano git prepare # heeds standard EDITOR variable git commitp 

这使您的提交信息保存在.git/.template

但不是这样,你应该使用一个工作stream,在这个工作stream中经常进行primefaces的和小的变化,并且在必要的时候使用特性分支来对这些变化进行分组。 如果你用git merge --no-ff $branch ,你可以稍后使用git log --first-parent来忽略分支。

你可以使用git gui并在工作时将其打开。 编写你将要做的bug修改的提交信息,然后做实际的代码修改,分级并提交。

把它写在一个文件中; 在工作时保持更新。 在实际提交时包含最终版本。

如果你使用git的graphics前端,那么你必须指定哪一个,以便有人可以专门帮助它。 一般来说,你可以简单地粘贴消息。

从命令行使用git,它会打开你的编辑器与临时文件,你可以读取到它的消息(例如:在RIM文件名)。

或者,您可以使用shell将该文件读取为-m参数的值:

 # bash example, may work elsewhere git commit -m "$(<filename)" 

我相信这个问题的动机是能够编写任何代码之前编写描述(提交消息)(当然,当编写代码时能够修改它)。 (之前使用了Perforce和一个类似Perforce的系统,我知道有时候在写这个代码的时候写一个关于你将要做什么的描述是有帮助的。

除了在文件中写入消息并使用-t <file> (– --template=<file> )或-F <file> (– --file=<file> )标志进行git commit ,另一种方法如下:

  1. git commit --allow-empty做一个空的提交。 这将像任何git commit一样提供一个编辑器,在这里你可以编写消息。 写下来并完成提交。

  2. 改变你的代码。

  3. 添加你想添加的文件与git add然后git commit --amend (或者只是git commit -a --amend如果你不想用git add来挑选特定的文件)。 这将使得之前的非空提交不再为空,并且还可以编辑该消息以更加贴近您实际做的(如果您愿意的话)。

(如果你正在和其他人一起工作,记住不要在这样做的时候git push :不要修改你已经推送的提交信息!)

当然,保持提交尽可能小而primefaces化的build议仍然适用,但这样可以让你在编写代码之前编写消息。 ( git commit --amend方法已经在另一个答案中提出了;我只是另外指出,你可以使用git commit --allow-empty

内置,而不是我所知。 如果你真的绝望,你可以写在terminal上,如COMMIT="Fix for bug #14453"COMMIT="$COMMIT and bug #4329"然后像git commit -m "$COMMIT"一样git commit -m "$COMMIT"

使用commit命令的--file <path>参数。

 git commit --file <absolute or relative path to file> 

并用文件的pathreplace< 文件的绝对或相对path >。

存储库目录上方目录中的相对文件示例:

 git commit --file ../commit-message.txt 

您可以在任何文本编辑器中处理提交消息,并将其保持打开状态。 只要保存文件,然后提交一个常量提交命令。 它从文本文件(.txt)中获取消息,而无需打开编辑器。