分支代码
介绍
恭喜!您刚刚以开发人员的身份加入了一个新组织。您已完成入职培训,创建了帐户并获得了所有必要的权限;您终于可以为您的组织正在开发的产品做出贡献了。但是等一下!刚加入时,您还不熟悉代码库。您担心自己可能会在某个地方犯错或引入错误。那么,如何开始为现有项目做出贡献,而不会冒无意中将错误引入现有代码的风险呢?本指南将向您展示如何通过使用 Git 分支代码,安全且直观地为现有项目做出贡献。
背景
分支是“开发分支”的简写。分支就像是同一软件的不同版本,可以独立处理不同的目标。例如,
一个分支可能会随着时间的推移跟踪软件的最新稳定版本
另一个分支可能正在跟踪该软件的最新(实验)版本
第三个分支可能正在跟踪团队为添加对新库/框架/语言/操作系统的支持所做的努力(例如,对 python 3.8 或 Ubuntu 20.04 的支持)
第四个分支可能正在跟踪修复错误的工作(例如,“低级.delegatecall()未返回执行结果的错误”)
诸如此类,分支机构的数量往往超过数十个。
一旦分支上的开发完成,例如,错误已修复或功能已实现,它现在就可以与另一个分支合并,以便将两个分支上的工作结合起来。举个假设的例子:当团队 A 修复错误时,团队 B 添加了一项功能。这两项工作似乎都完成了。通过合并,可以创建一个软件版本,该版本既包含团队 A 修复的错误,又包含团队 B 添加的功能。
最后,作为技术说明,Git 提供了有用的功能,可以测试是否可以安全地进行合并或是否存在冲突的可能性。当团队 A 和团队 B 都必须修改同一个文件时,可能会发生冲突。那么简单的合并可能无法正常工作,合并将需要额外的注意。
现实生活中的例子
下一节将简要研究一流的、专业开发的开源存储库:TensorFlow。
如您所见,有 29 个分支。对于复杂的项目,分支是跟踪错误、功能、新版本和其他同时进行的开发工作的必需品。
关于权限
To make changes to a repo, you must have permissions. Collaborators on a project are people who officially have permissions to make most modifications to a repo. Contributors, on the other hand, do not have the permissions to make most modifications to a repo, but are allowed to propose changes via pull requests (more on this later).
Branching Code
To give full visibility on branching code, you’ll first learn how to branch code as a collaborator, and then you’ll see an illustration of the (small) difference in branching as a contributor. To begin, create a toy repo on Github with a single file so you can follow along.
Now click on Branch: master.
Type in the name of the branch you’d like to create. In this case, development.
Click Create branch: development from ‘master’. The screen will refresh and will look almost the same, except now the branch will be development.
Now, you’ll make a simple addition to this branch. Click Add a README. Scroll down and click Commit new file.
Now you can see our dev branch has been modified.
In particular, the development branch is now one commit ahead of master.
Happy with the change you have made, you’d like to incorporate it to the main repo, i.e., to the master branch. To do so, click Compare & pull request.
There is a lot of interesting information in the next screen:
First, notice that you can generally choose which two branches to merge, and which direction the pull request goes.
Secondly, notice that Github automatically determines if a merge is “safe.” Unsafe, or conflicted, merges occur generally when a file in both branches was modified differently.
Thirdly, as part of the pull request (a.k.a “PR”) you have the option to leave a message. Usually, you’ll detail what changes you have made. In this case, the default Create README.md is explanatory enough.
Finally, on the bottom, you can see the actual code that has been added (in green), and if you had deleted code, you would have seen it appear as well (in red).
Go ahead and click Create pull request.
If you click on the Pull requests tab of your repo, you can see the pull request you have just made, awaiting your approval.
This same tab can list many pull requests that will be getting reviewed for approval.
Click on Create README.md, then click Merge pull request, and then click Confirm merge.
现在您已完成合并,开发分支与master处于相同状态。您可以根据需要删除它,也可以保留它以供进一步开发。
作为贡献者编写代码分支
假设你没有某个 repo 的特权权限。你仍然可以做出贡献!转到 repo 的页面Branching Code Tutorial Repo,然后单击Fork:
您将会看到如下屏幕:
一旦分叉完成,你会注意到屏幕上有相同的 repo,只是名称略有改变:
分叉基本上会创建原始仓库的副本,您对此拥有完全的权限。您要做的就是对分叉进行更改,然后创建拉取请求以将更改提交回原始仓库。单击创建新文件。
然后将其命名为“hello_world.py”以及代码行打印(“Hello world!”)。
单击“提交新文件”。
请注意,该分支正在与原始存储库进行比较:“此分支比 emmanueltsukerman:master 领先 1 次提交。”单击“拉取请求” 。
观察一下,你可以将请求拉取到原始仓库。如你所见,作为贡献者更改代码与作为协作者更改代码基本相同,只是你是在分叉副本上进行更改。
结论
从本指南中可以看出,代码分支非常简单。为项目做出贡献并拥有公开的记录是一件非常愉快的事情,现在您已经具备了开始做出贡献的技能。作为一名软件开发人员,您不仅可以为组织的项目做出贡献,甚至可以为公共开源项目做出贡献!如果您有兴趣这样做,请参阅Code Triage,这是一个为开源项目提供贡献机会的网站。要了解 Git 的更多高级方面(例如变基),请参阅课程Git Real。祝您编码愉快!
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~