自我训练更好地在git中实施

时间:2013-12-02 18:20:07

标签: git github workflow commit

问题

我注意到GitHub上的一些存储库在查看Pull请求时特别关注他们认为可接受的历史记录。他们的理由是存储库的历史应该具有高信噪比; git log应该“讲故事”。

哲学而言,我非常同意这一点。但是在 practice 中,我可能是反对整洁,有序的提交行为的最严重的罪犯之一。

我想改变它。

我去过哪里

我试图注意,“只是试着记住”......但它确实对我不起作用。我太散乱了。我可以启动一个功能分支(或bugfix分支,或其他),目的是让我的工作专注于特定主题。有时该主题可能是“改进文档”,“重构此类”或“调整此程序的输出”。但在我知道它之前,我正在做一些事情,当我的功能(或错误,或其他)分支准备合并时,它是假设的主题的混合还有,还有其他一些东西。

最严重的罪犯

总的来说这是正确的,但如果我必须强调一些我自己最糟糕的习惯,可能最“吵”的编辑是:

  • 空白调整
  • 为了便于阅读而对代码块进行小的重写
  • 添加简短(但频繁)的评论以帮助代码"可扫描性"
  • 重命名变量,使其名称(a)更能描述变量的用途,(b)在文件/组件/项目中保持一致

所以,我喜欢做所有这些事情,我为自己的工作感到自豪。但我希望我知道一种方法,这样我的项目历史就更有序/合乎逻辑

...现在,问题

有人知道散点图如何变得更好吗?

(工具,心理模型,图表......欢迎任何事情!)

2 个答案:

答案 0 :(得分:2)

你没有必要用git来对抗你。查看补丁添加(git add -p),这将允许您选择和提交您的更改的部分。如果你使用Vim,fugitive插件会让这很简单。 Emacs用户有magit,但我没试过。我听说它也擅长简化补丁添加。此外,如果您只是提交,比如说,掌握,并意识到它应该是过去5次提交的分支,只需要git branch topic删除主题分支头,{{1} }备份master 5提交,然后git reset --hard HEAD~5并继续。

  • 空白调整

如果是最后一次提交,只需进行/保存调整,添加更改,然后git checkout topic将它们折叠到上一次提交中。如果有两次或更多次提交,请将更改提交给新的,然后git commit --amend并将最新(最底部)提交行移至您想要更改的提交线下方,并更改“选择”该行的开头为'fixup',然后保存并退出。

  • 为了便于阅读而对代码块进行小的重写

再次,git rebase -i并在要调整,保存和退出的任何提交中将git rebase -i更改为pick,编辑文件,添加/它们,{{1必要时重复。

  • 添加简短(但频繁)的评论以帮助代码“scannability”

没错。

  • 重命名变量......

像这样的提交很好,并且代码审查非常快:

edit

您可以使用提交消息的正文来解释原因,如果您认为它将帮助您的提交的未来用户,包括您自己。

答案 1 :(得分:0)

W.r.t。修复空白和代码样式,有几种语言的工具可以帮助您或帮助您。例如。 C有indent,Python有reindent.py等等。您可以自己运行这些程序,也可以在每次签入时使用git中的提交挂钩自动运行。

我最喜欢的是每次保存文件时都使用编辑器运行检查器(使用syntastic中的vim)。这可以为您提供即时反馈。您可以将其视为自动学习。 Syntastic有许多语言的检查器。

关于散乱,训练自己工作并完成手头的任务。如果您在该任务期间看到其他内容,请记下其中的位置和内容,并将其放在一边以便以后修复。除非是例如一个微不足道的错字。只需解决这个问题然后继续。