我在Git上有多个项目,最终我希望将其引入其他项目。但是,现在只有我一个人,我非常简单地使用Git和GitHub:没有分支,基本上只是将提交用作本地文件的备份。有时我会回头查看文件的早期版本以供参考,但是到目前为止,我不需要进行任何回滚,尽管我很欣赏将来可能需要的选项。
作为唯一的开发人员,我现在可以利用Git或GitHub的哪些功能使我受益?我的工作流程应该怎样?
另外,是否有任何我需要开始做的特殊实践,以期望将来将其他人添加到我的项目中?
我在Git上有多个项目,最终我希望将其引入其他项目。但是,现在只有我一个人,我非常简单地使用Git和GitHub:没有分支,基本上只是将提交用作本地文件的备份。有时我会回头查看文件的早期版本以供参考,但是到目前为止,我不需要进行任何回滚,尽管我很欣赏将来可能需要的选项。
作为唯一的开发人员,我现在可以利用Git或GitHub的哪些功能使我受益?我的工作流程应该怎样?
另外,是否有任何我需要开始做的特殊实践,以期望将来将其他人添加到我的项目中?
Answers:
另外,是否有任何我需要开始做的特殊实践,以期望将来将其他人添加到我的项目中?
当然。即使您现在没有团队,也可以使用一个简单的好习惯:创建一个单独的分支进行开发。想法是master分支将仅包含已发布的代码版本或主要更改。加入您的项目的新开发人员可以轻松地采用此方法。
此外,即使您独自工作,分支也很有用。例如,您在编写新功能的过程中发现了一个错误。如果不使用分支,则必须同时执行以下两项操作:添加新功能并修复同一分支中的错误。这不好:P另一方面,如果您已经创建了一个用于创建新功能的新分支,则只需签出development分支,修复错误并签回新功能分支。
这只是一个简单的例子,说明您可以成为一名程序员。我确信必须有更多好的做法。
我强烈建议您这篇文章:成功的Git分支模型
我正是在这种情况下,但是我确实选择了使用Git的工作流程,虽然不一定更复杂,但稍微复杂一些。
最初的目标是学习git方法,因此我做了一些探索。然后恢复到您描述的工作流程。
一段时间后,由于出现某些情况而变得难以工作,这也给我带来了坏习惯,一旦我加入团队,就很难改变这种坏习惯。
所以我决定满足以下条件:
我还设置了一个git hub帐户,用于同步中继。这使我可以轻松地在不同的计算机上工作。这是有必要的,但允许我发现与其他计算机上不存在的环境相关的错误。因此,现在我养成了至少在一次不同的“原始”系统上尝试项目的习惯。当需要部署到客户时,为我省去了很多麻烦。
起初,多个分支机构看起来有些过分,但确实起到了很大作用。我可以在一个分支中开始一个构想,并在其中进行一段时间的工作,而当我开始运行圈子时,我放弃了,而开始了另一个分支以从事其他工作。后来有了一个主意,我将回到半熟的分支并探讨这个主意。总体而言,这使我的工作效率更高,因为我可以很快地表现出想法和闪光点,并观察它是否有效。用GIT切换分支的成本非常低,这使我非常灵活地使用代码库。话虽如此,我仍然必须精通rebase概念以清理历史,但由于我一个人,我怀疑我是否真的需要这样做。推它为“好学习”。
当所有分支变得复杂时,我探索了log选项以绘制更改树,并查看哪个分支在哪里。
长话短说,git不像SVN,CVS或(brrr)TFS。分支非常便宜,并且犯错会消灭工作,实际上是非常困难的。我只有一次失去了一些工作,这是因为我的承诺太大了(请参见上面的不良习惯)。如果您经常承诺,那么一小部分git将绝对是您的最佳盟友。
对我来说,git使我对源代码控制真正真正的意义开了一个开阔的胸怀。之前的其他任何事情都只是尝试获得它,git是第一个,在我看来,是得到它的。也就是说,我没有尝试其他DVCS,很可能可以将此声明扩展到整个家庭。
最后一个建议,命令行是您的朋友。并不是说图形工具不是很好,相反,但是当我下降到命令行并亲自尝试时,我真的很讨厌git。实际上,它制作得非常好,易于使用非常全面的帮助系统进行后续操作。我最大的问题是绑定到Windows中丑陋的控制台上,直到找到替代方案为止。
现在,我将两者与Eclipse集成到Git中一起使用,以实时查看发生的事情,并执行一些操作,例如差异,浏览文件的历史记录等。以及用于分支,合并,推送,获取以及更复杂的日志树的命令行。一些基本的脚本,在源代码控制方面我从未如此高效,并且对源代码也没有太多控制。
祝您好运,希望对您有所帮助。
对于更简单的模型,您可以查看GitHub的功能。“ GitHub流”非常简单,这里有一个很好的指南:https : //guides.github.com/introduction/flow/index.html
摘要(来自Scott Chacon的博客):
那么,什么是GitHub Flow?
- master分支中的任何内容都是可部署的
- 要处理新的东西,请创建一个描述性地命名为master的分支(即:new-oauth2-scopes)
- 本地提交到该分支,并定期将您的工作推送到服务器上的同一命名分支
- 当您需要反馈或帮助时,或者您认为分支可以合并时,请打开拉取请求
- 在其他人查看并批准了该功能后,您可以将其合并到主功能中
- 合并并推送到“主服务器”后,您可以并且应该立即部署