你什么时候第一次提交?

时间:2013-11-22 01:59:41

标签: git version-control

问题:

基本上我想知道,何时是第一次提交源/版本控制的最佳/正确时间?

背景:

我自己编写和维护一些项目,主要是作为业余爱好或志愿者工作。在开始新项目时,我通常会非常快速地进行迭代,以使网站/应用程序的外观/感觉达到我想要的位置。完成“框架”后,我开始处理各个部分或页面。

在过去,我没有做过第一次提交,直到我完成了第一个“alpha”构建,其中几乎所有最初所需的功能都在那里。我从来没有担心搞过什么东西,因为我在写作时经常进行测试(例如,从远程开发服务器提供的网页),如果我搞砸了,我可以立即恢复。我从来没有担心失去工作,因为文件存储在两个地方(本地机器和远程开发服务器)。

最近虽然我一直在想我应该在项目的最初阶段做出第一次提交。然后在框架完成时,在每个页面/功能完成时进行提交。这种方法可以让我更好地了解我所做的更改,但我想知道在项目早期是否有任何其他重大好处。

我发现的两个最相关的帖子Using Source ControlSource Control - If, Why, How to start?,似乎并没有真正回答/解释何时进行第一次提交及其原因。

5 个答案:

答案 0 :(得分:3)

我通常在一开始就提交第一个初始化提交,其中基本.gitignore(在极少数情况下甚至可能是空白)和/或解释项目的README。这是在我开始处理项目之前发生的。

我很清楚你从头开始决定你的第一次真正的提交应该是什么困难。毕竟,我们希望进行实际包含有用且已经有效的有用提交。但特别是在开始时这不是真的可能或容易。但这完全正常。所以你不应该羞于承诺你拥有的东西。也许尝试将其打包成语义步骤,例如“添加基础应用程序框架”“添加布局草稿”,但即使这有时也是可能的,所以请继续做某事。

如果你真的想稍后清理,你仍然可以在发布项目之前进行重新定义,所以即使那些“WIP”提交也会被重写为实际有用的包。

答案 1 :(得分:1)

第一次提交不应该比你的任何其他提交更重要;它只是你回购中的任何其他提交。

你应该在你认为符合逻辑的地方做你的第一次提交,这意味着,无论你在哪里达到一个点,你所做的工作足够合理,只有一个,只有一个,提交;就像在正常工作流程中一样。

我的第一个提交通常是空项目IDE文件或初始.gitignore。

不要害怕承诺。实际上,你应该感受到它的反面:经常提供帮助。将官僚神经症留下来合并和标记:)

答案 2 :(得分:0)

你提交的提交越多越好。你可以打开一个新的“dev”分支,开发并提交到该分支,最后将它合并到master分支并摆脱dev分支。如果有什么东西可行,或者如果我把它称为一天(通常我会把它推到原点),我会做出承诺

答案 3 :(得分:0)

我经常喜欢提交.gitignore文件作为第一次提交的唯一内容。

然后,在我把某些东西打成某种原型之后,我可能会制作一个全新的回购,而不是其中的所有垃圾,或者进行大量的压制,或者其他任何东西。这取决于提交历史中的内容是否有用。

答案 4 :(得分:0)

我将假设您正在讨论启动新功能时的第一次提交,而不仅仅是回购中的第一次提交。我也认为你(像我一样)习惯使用SVN或CVS,或者提交不可变的东西并立即与他人共享。

使用git的一个好处是你可以使用私有的rebase工作流程。在这个工作流程中,我认为提交是不同的“种类”提交:

  • checkpoint - 一个保存点,因为我想保存我的位置,例如我要重构一些我想轻易退出的东西,或者我需要上下文切换到其他任务,或者我只是在晚上离开工作

  • 发展里程碑 - 达到了发展的一个重要点,例如:您完成了功能编码或修复了某个错误

  • 功能里程碑 - 达到了一个重要的发展点,例如功能(或功能的一部分)是代码完成并通过初始测试

我的检查点提交是非常临时的 - 我会重置它们,修改它们,重新定义它们,并在我工作时压缩它们。我的开发和功能里程碑提交一直持续到我完成该功能。一旦我完成了这个功能,我就会清理自己的历史,并决定在合并和推送时保留在项目历史中的重要内容 - 我将重新排序并压缩一小段历史重要提交甚至是单一提交功能)。

我的观点是,在开发过程中不会出现第一次提交 - 经常根据需要检查点。一旦完成该功能并获得更多历史记录并清理了分支,就可以更容易地确定功能分支中的“第一个”(可能只是)提交内容。


Linus关于私人rebase工作流程:

人们可以(也可能应该)改变他们的私人树(他们自己的树) 工作)。这是一个清理。但绝不是其他人的代码。这是一个“毁灭 历史“

...

现在“清洁”部分有点微妙,尽管第一条规则是 非常明显和简单:

  • 保持自己的历史可读性

    有些人首先只是在头脑中解决这个问题 不犯错误。但这是非常罕见的,对我们其他人来说,我们 在我们解决问题时使用“git rebase”等。

    所以“git rebase”没错。但这只是在你自己非常自己的情况下才是正确的 私人git树。

  • 不要暴露你的垃圾。

    这意味着:如果你还处于“git rebase”阶段,你就不要推 出来。如果还没准备好,你可以发送补丁,或使用私人git 树木(就像一个“补丁系列替代品”),你没有告诉 广大公众。