数据科学Git入门
数据科学和工程领域之间的互动越来越密切,因为数据科学家正在参与生产系统并加入研发团队。我们希望让没有工程经验的数据科学家更容易理解核心工程最佳实践。
我们正在编写一本关于工程主题的手册,例如Git、Docker、云基础设施和模型服务,这些都是我们听说数据科学从业者正在思考的。
Git入门
Git是一个版本控制系统,用于跟踪对源代码随时间推移所做的更改。
如果没有版本控制系统,多人协作同一个项目将会非常混乱。因为没有人跟踪他们的修改,合并它们到一个单一的事实变得非常困难,解决最终的冲突变得不可能。Git以及在其之上构建的更高级系统(例如GitHub)提供了解决此问题的工具。
通常,每个用户都会将一个中心存储库克隆到他们的本地系统(称为“origin”或“远程”),各个用户会将其克隆到他们的本地机器(称为“本地”或“克隆”)。用户在他们的计算机上存储相关工作(称为“提交”)后,将他们的完成的工作“推送”并“合并”回中心存储库。
Git和GitHub的区别
Git既是用于跟踪和合并源代码更改的基础技术,也是其命令行客户端 (CLI)。
GitHub是在Git技术之上创建的在线平台,使它更容易使用。此外,它还提供自动化、拉取请求和用户管理等功能。GitLab和Sourcetree是另外两个选项。
数据科学中的Git
在数据科学中,我们将使用一些模型和算法来分析数据,一个模型可能由多人创建,这使得同时处理和更新变得困难,但是Git通过存储以前的版本并允许许多人在同一个项目上同时工作来简化这一切。
让我们了解一些在开发者中非常常见的Git术语。
术语
仓库 (Repository) − 包含项目所有分支和提交的“数据库”。
分支 (Branch) − 仓库的替代状态或开发路径。
合并 (Merge) − 将两个(或多个)分支合并到一个分支中,一个事实的定义。
克隆 (Clone) − 在本地复制远程仓库的过程。
Origin − 本地克隆来自的远程仓库,称为origin。
Main/Master − 根分支的常用名称,是主要的事实仓库,包括“main”和“master”。
暂存 (Stage) − 在此阶段选择要包含在新提交中的文件。
提交 (Commit) − 存储对仓库中文件所做暂存修改的快照。
HEAD − 指向本地仓库当前提交的缩写。
推送 (Push) − 将更改发送到远程仓库以供公开查看。
拉取 (Pull) − 将其他人的更新添加到您的个人仓库。
拉取请求 (Pull Request) − 在将您的修改合并到main/master之前,使用拉取请求机制来检查和批准它们。
正如我们上面所讨论的,为此我们需要一些常用的命令,让我们在下面讨论它们:
git init − 在本地计算机上创建一个新仓库。
git clone − 开始编辑一个已存在的远程仓库。
git add − 选择要保存的文件(暂存)。
使用git status查看您已修改的文件。
git commit − 将选定文件作为快照存储(提交)。
使用git push命令将保存的快照(提交)发送到远程仓库。
使用git pull命令将其他人当前的提交拉取到您的计算机。
使用git branch创建或删除分支。
git checkout − 切换分支或撤销本地文件修改。
git merge − 使用git合并分支以创建一个单一分支或一个单一的事实。
流畅处理Git流程的规则
Git在实际项目中有很多优点,但是有一些规则或情况需要用户小心地处理一些数据或步骤,以确保安全或其他原因。
有一些规则可以帮助流畅地将项目上传到GitHub。
不要推送数据集
Git用于跟踪、管理和存储代码,但将数据集放在其中不是一个好习惯。有很多好的数据跟踪器可用,请跟踪您的数据。
不要推送密钥
在GitHub或Git上发布或推送的代码可能是私有的,用户也可以将其公开。但是,即使在GitHub上推送的代码或数据是私有的,也不建议出于安全原因将密码等密钥放在其中。
不要使用 --force
在各种情况下都会使用-force方法,但是大多数情况下不建议使用它,因为在将代码推送到Git时,如果出现错误,编译器或CLI会显示使用force方法将数据放到服务器上,但这不是一个好的方法。
进行小的提交并编写清晰的描述
初级开发者可能不擅长进行小的提交,但建议进行小的提交,因为它们使开发过程更加清晰,并有助于将来的更新。此外,编写良好且清晰的描述也使这个过程更容易。
结论
Git是一个版本控制系统,用于跟踪对源代码随时间推移所做的更改。如果没有版本控制系统,多人协作同一个项目将会非常混乱。Git既是用于跟踪和合并源代码更改的基础技术,也是其命令行客户端 (CLI)。GitHub是在Git技术之上创建的在线平台,使它更容易使用。此外,它还提供自动化、拉取请求和用户管理等功能。