Git入门指南:版本控制如何提升开发效率

Git入门指南:版本控制如何提升开发效率

我决定写一篇关于Git和Github的文章。为什么?自从我开始为软件公司工作以来,我就经常接触Git。现在,我真希望可以回到过去,更多地使用它……甚至是那些我从未打算公开发布的项目(比如大部分项目!)。这篇文章旨在直接与"进入软件公司前的我"这样的人对话——他们可能错过了使用Git的重大优势。请问自己以下问题:

  • 你掌握的大部分编程知识都是自学的吗?
  • 你是否曾经对项目做了更改,随后因为产生了意想不到的bug而希望撤销该更改?
  • 你之前尝试使用git时,是否对一些最基本的步骤感到沮丧,比如从现有项目设置新仓库?
  • 你是否将所有代码保存在云盘(如Dropbox或Google Drive)中以确保有一致的代码备份?
  • 你是否曾难以与另一位开发者在项目上协作?
  • 你是否知道git,知道它很流行且据说很有用,但被最初的学习曲线吓倒?

如果你对以上任何一点有共鸣,这篇文章可能会帮助你。如果你已经知道Git/Github为什么很棒,下面的提示仍然可能对你有益。这篇文章不太像是"git 101",因为网上有很多这方面的优秀资源。不过,我将来可能会就这个主题写更多内容!

免责声明

我不是git大师。我是一个git新手,这没关系。你不需要精通就能获益。自从我开始在软件公司工作以来,我遇到了一些真正的git wizard,并从他们传授智慧的意愿中受益匪浅。

我刚刚开始我的Git学习之旅,我确实指的是journey——这是一段说实话可能相当令人沮丧的艰难过程。(在这些沮丧的时刻之后,往往会出现一些最大的Git顿悟时刻)。

尽管我相对较新,但我对它的好处感受强烈,足以写一篇文章,因为我认为有很多人可以从开始使用这项技术中受益匪浅。

如果你不同意我提出的任何建议,认为我应该补充这篇文章,或者只是想聊聊Git——请随时留言或在Twitter/Discord上联系我。

只是部分优势……

  • 冗余的、基于云的仅源代码备份。Github现在免费提供私有仓库。这比将整个代码文件夹存储在Dropbox/GDrive/等上好得多。
  • 能够选择性回滚更改或跟踪特定随时间的变化
  • 如果项目最终涉及多个开发人员,使协作编码更加容易
  • 增加人们试用你产品的可能性(相对于从他们不认识或不信任的人编写的随机网站下载安装程序)。
  • 如果你未来有在软件公司工作的愿望,特别是在任何类型的开发角色中,预先熟悉Git将是一笔巨大的财富

虽然学习它需要时间,并且这是一项必须维护的技能,但通过学习它,你作为开发人员将受益匪浅,而且你不需要成为大师就能立即使用它。

从已存在的项目设置仓库

如果你像我一样,可能会发现你经常在想到要设置github仓库之前就已经开始编写代码了。Visual Studio中有内置功能,但我一直难以让它们与已经包含代码的项目一起工作。并非无计可施。

这里有一篇相当不错的文章:https://help.github.com/en/github/importing-your-projects-to-github/adding-an-existing-project-to-github-using-the-command-line

但如果你内心的千禧一代无法忍受从头到尾阅读上述教程,请至少记住以下关键点

Empty Repo Creation

只要你这样做,教程中的步骤就会顺利进行。我还建议在进行第一次提交之前运行"git status"命令,并确保你没有看到"bin/“或其他此类文件夹。如果你看到了,请先阅读下一节。

在进行初始提交之前,创建.gitignore

.gitignore是一个列出提交中应包含和不应包含内容的文件。通常,将编译器生成的东西包含在提交中被认为是不良实践。另一个禁忌是包含像NuGet包这样的依赖项,因为这会不必要地大幅增加仓库的大小。

当然,你可以研究一个好的.gitignore是什么样的,但我个人建议查看 Gitignore.io。这个网站根据你正在进行的项目类型提供模板。例如,如果你正在处理一个C#项目,你可以搜索CSharp并获得一个现成的.gitignore:

然后你可以将其保存为仓库根目录下的.gitignore,下次运行"git status"时,你会看到诸如:

  • bin/
  • obj/
  • .vs/
  • packages/

这些文件夹都从更改列表中消失了。这意味着你将只把重要的内容提交到github,任何潜在的仓库克隆者都会对你感到满意。

  • 解释产品今天是什么以及它来自哪里。还有你未来对它的设想。(当前和未来功能/路线图)
  • 指导你希望如何报告潜在问题,或者你是否开放其他人向你的仓库提交pull requests。
  • 提供预编译二进制文件的链接,如果你决定提供它们的话。
  • 鸣谢你在项目中使用的任何第三方库

如果你的目标是增加曝光度,考虑添加一个或多个截图来展示你的产品。

点击绿色按钮。

选择正确的许可证

如果你计划在任何时候使你的仓库公开,不仅指定许可证很重要,而且理解你最终选择的许可证的含义也很重要。Github通过提供每个许可证能做什么的摘要使这个过程更容易。你可能想知道哪个许可证是"最好的”——事实是这真的取决于你的项目旨在做什么。

我绝不是OSS许可方面的专家,但我肯定看到了根据你预期项目使用范围来了解它们之间差异的价值。

例如,如果你正在编写一个新的文件系统、编解码器、解析器或算法,你设想软件公司未来可能采用你的代码。GPL许可证旨在强制任何使用该代码的人使其代码也开源

另一方面,如果你正在编写一个成熟的应用程序,并且你想避免你的东西被抄袭,GPL可能是完美的解决方案。

关于许可证的额外阅读,我推荐以下资源:

仓库设置后如何添加许可证

你已经设置了仓库,但现在你需要添加许可证。我们该怎么做?

从你在Github上的仓库主页,点击"Create New File"。一旦你输入单词license,你将看到一个名为"Choose a license template"的按钮出现——点击它!

Choose License Template

从这里,你可以选择不同的许可证(流行的如Apache、GPL和MIT列在顶部)并查看它们的差异。准备好后,点击"Review and submit"。

每次编码会话以提交或PR结束

这里有很多不同的考虑因素,比如你的仓库是公开还是私有的,你是否与他人协作等等。最简单的是直接提交到master,如果这是一个私有仓库并且只有你一个人在贡献,这可能没问题。

关键是,为了最大化"冗余备份"的好处,你需要确保你编写的任何代码都存在于本地机器之外的某个地方。不要错误地认为你应该等到完成整个主题的代码更改后再推送它们。如果你进行了任何你不想重写的代码更改,请确保你以某种方式将这些更改传播到Github。记住:git commit 不是 git push。运行"git commit"实际上不会将你的更改备份到Github。注意你的git命令的输出,因为它通常很清楚你的代码何时已经发布到互联网上:

结论

Git有学习曲线,不是你一周就能掌握的。但你越早开始接触它越好。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计