Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 将更改提交到存储库的好标准是什么?_Git_Version Control_Commit - Fatal编程技术网

Git 将更改提交到存储库的好标准是什么?

Git 将更改提交到存储库的好标准是什么?,git,version-control,commit,Git,Version Control,Commit,我目前正在使用git管理几个项目,然而,最近有一个问题困扰着我:将修改提交到主分支和辅助分支的好基调是什么?它应该是“编译时提交”、“工作时提交”还是其他?谢谢。退一步说,我尝试在短时间内完成问题/错误/功能。如果需要一天以上的时间才能到达一个好的停止点,那么任务就太大了 也就是说,我认为最佳实践是在代码编译并经过充分测试后提交更改(理想情况下是使用随代码更改提交的单元或集成测试) 如果编译+功能正确+经过良好测试==“工作时提交”,那么这似乎是合适的规则。如果您使用的是票证管理系统,我会说任务

我目前正在使用git管理几个项目,然而,最近有一个问题困扰着我:将修改提交到主分支和辅助分支的好基调是什么?它应该是“编译时提交”、“工作时提交”还是其他?谢谢。

退一步说,我尝试在短时间内完成问题/错误/功能。如果需要一天以上的时间才能到达一个好的停止点,那么任务就太大了

也就是说,我认为最佳实践是在代码编译并经过充分测试后提交更改(理想情况下是使用随代码更改提交的单元或集成测试)


如果编译+功能正确+经过良好测试==“工作时提交”,那么这似乎是合适的规则。

如果您使用的是票证管理系统,我会说任务修复时提交。

我自己也会选择“尽早提交,经常提交”。如果您有一个自动签出和构建正在进行,这显然是行不通的。

在它工作时提交。在我的例子中,这意味着:自动执行冒烟测试,运行它并提交


注意:我只是在提交之前自动/运行冒烟测试。回归测试留给了持续集成。

这真的取决于,这是您个人的回购协议还是许多开发人员共享的回购协议?你在这个项目中有多远

就我个人而言,当我完成了一个方面的工作,并且所有的东西都编译好了,我就向我的subversion存储库作出承诺。它不必是完整的,只是不必破碎。我宁愿一开始就不把东西弄坏

写了一半的代码可以签入,但只能在我的个人分支中签入,通常带有关于我当时正在做什么以及还需要做什么的注释。因为我使用Subversion,这是我的个人回购协议,所以我使用它主要是为了能够离开我的桌面,回到我离开笔记本电脑的地方

通常,每次提交一个bug/问题/特性是不错的,但可能不适合您的开发风格。如果这是一个更完整的项目,它可能会解决,因为提交意味着您正在从某个地方的列表中划掉项目,这意味着现在又完成了一个项目


其他的事情要考虑,什么是重要的变化,它需要检查?例如,我昨晚签入的代码显著更改了一个内部API,这意味着我必须在提交消息和文档中记录更改。同时,我也修改了一些评论,以修正打字错误。这会在提交消息上得到一个小的子注释,但我认为这不是一个足够大的问题。保存更改和发布更改之间存在差异

提交是保存更改。虽然我不建议使用计时器,但我建议您更像是保存一个文件,而不是发布一个版本。当你担心你可能需要回来,但又担心很难回到你现在的位置时,就去做吧


但是,在发布提交之前,请重写提交(例如git-rebase-i origin/master)。从你所做的混乱中找到意义,创建一组可理解的、干净的提交和良好的提交消息,并确保每一个都通过了可能的质量检查。然后发布它。

一次只提交一个类型的更改

对于每个项目,“类型”的含义是不同的,但一些流行的例子包括“外观更改”与“功能更改”以及“重构”与“添加新内容”。这使得查看日志时更容易跟踪更改,也更容易恢复到修订

一些基本的事情:

  • 努力按照“逻辑变化”进行承诺;缺陷修复、重构、功能
  • 在提交代码之前运行单元测试;确保你没有破坏任何明显的东西(你确实有单元测试,不是吗)
  • 如果在多开发者环境中;从repo更新并再次运行单元测试,以确保没有冲突的更改破坏了某人(您或他们)的代码
  • 根据需要进行修复,并从3开始重复,直到没有任何损坏
  • 立即做出承诺并交叉手指
  • 依靠您的持续集成测试来告诉您是否有其他故障

  • 提交您不想再次编写的任何代码:)

    您的提交不一定会破坏某些东西。如果您正确地应用开闭原则,很好地布局类,等等,那么您可以轻松地添加功能而不破坏现有内容。