
图片来源:RealToughCandy.com
从历史上看,大多数数据科学家并不了解软件开发实践和工具,如版本控制系统。但是,这种情况正在改变,数据科学项目正在采用软件工程的最佳实践,而Git已经成为文件和数据版本控制的一个重要工具。现代数据团队使用它来协作代码库项目并更快地解决冲突。
在这篇文章中,我们将学习14个基本的Git命令,这些命令将帮助你初始化一个项目,创建和合并分支,对文件进行版本管理,与远程服务器同步并监控变化。
**注意:**请确保你已经从官方网站上正确安装了Git。
1.初始化
你可以在当前目录下通过键入来初始化Git版本控制系统。
git init
或者可以在特定的目录下初始化Git。
git init <directory>

2.克隆
克隆 命令将所有项目文件从远程服务器复制到本地机器上。它还会添加一个远程名称作为`source',以便与远程服务器同步文件。
Git 克隆需要 HTTPS 链接,安全连接需要 SSH 链接。
git clone <HTTPS/SSH>
3.添加远程
你可以通过添加远程的名称和HTTPS/SSH地址来连接单个或多个远程服务器。
git remote add <remote name> <HTTPS/SSH>
**注意:**从GitHub或任何远程服务器克隆一个仓库,会自动将远程添加为 "源"。
4.创建分支
分支是开发新功能或调试代码的最佳方式。它允许你在不干扰 "主 "分支的情况下单独工作。
使用checkout 命令创建一个新的分支,使用 `-b` 标签和分支名称。
git checkout -b <branch-name>
或者使用带有`-c`标签和分支名的switch
git switch -c <branch-name>
或者直接使用分支命令
git branch <branch-name>

5.切换分支
要把一个分支从当前分支切换到另一个分支,可以使用checkout或switch命令,后面加上分支名称。
git checkout <branch-name>
git switch <branch-name>
6.拉取
为了与远程服务器同步变化,我们需要首先使用pull命令将远程的变化拉到本地版本库。当在远程版本库中进行修改时,就需要这样做。
git pull
你可以在远程名称后面加上一个分支名称来拉动一个分支。
git pull <remote name> <branch>
默认情况下,pull 命令会获取更改,并将其与当前分支合并。如果要重新定位,而不是合并,你可以在远程名称和分支前添加`--rebase`标志。
git pull --rebase origin master
7.添加
使用add 命令将文件添加到暂存区域。它需要文件名或文件名的列表。
git add <file-name>
你也可以使用`.`或`-A`标志添加所有文件。
git add .
8.提交
在添加文件到暂存区域后,你可以使用提交 命令来创建一个版本。
提交命令需要使用`-m`标志来说明提交的标题。如果你做了多个修改并想把它们都列出来,可以用另一个`-m`标志把它们加到描述中。
git commit -m "Title" -m "Description"

注意:在提交修改之前,请确保你已经配置了你的用户名 和电子邮件 。
git config --global user.name <username>
git config --global user.email <youremail@yourdomain.com>
9.推送
使用推送 命令将本地修改同步到远程服务器。你可以简单地输入`git push`来推送修改到远程仓库。
对于推送变化到一个特定的远程服务器和分支,使用下面的命令。
git push <remote name> <branch-name>
10.撤销提交
Gitrevert可以撤销对某个特定提交的修改,并将其作为新的提交添加,同时保持日志的完整性。要撤销,你需要提供一个特定提交的哈希值。
git revert <commit>
你也可以用reset命令来撤消改动。它将改动重置到一个特定的提交,并放弃之后所有的提交。
git reset <commit>
**注意:**不鼓励使用reset命令,因为它会修改你的git日志历史。
11.合并
合并命令会简单地将特定分支的修改合并到当前分支。该命令需要一个分支名。
git merge <branch>
当你在处理多个分支,并希望将改动合并到主分支时,这个命令就非常方便了。
12.日志
要检查以前提交的完整历史,可以使用log命令。
要显示最近的日志,可以在数字后面加上"-",它将显示有限数量的最近提交历史。
例如,将日志限制在5条。
git log -5
你也可以检查特定作者的提交。
git log --author=”<pattern>”
**注意:**git log有多个标志来过滤掉特定类型的提交。请查看完整的文档。

13.差异
使用diff 命令将显示未提交的修改与当前提交的比较。
git diff
要比较两个不同的提交,请使用:
git diff <commit1> <commit2>
而对于比较两个分支,则使用:
git diff <branch1> <branch2>
14.状态
status命令显示工作目录的当前状态。它包括将要提交的修改、未合并的路径、未分阶段提交的修改以及未跟踪的文件列表等信息。
git status
**注:**请查看Github和Git初学者教程,了解更多关于数据科学中的版本控制系统。