本篇博客主要讲的是『Git 详细教程之四: Git 对 GitHub 的配置和基本操作』。如果您是第一次学习 Git ,请先阅读博主的前几篇文章:
团队协作模式一般分为两种:团队内协作以及跨团队协作。
团队内协作指的是团队内的成员对代码托管中心,也就是远程库都具有 克隆(clone)、推送(push)以及拉取(pull) 的权限,共同维护开发。
跨团队协作指的是,团队内的成员可以直接对远程库进行操作;而团队外的成员可以对远程库进行派生(fork),即复制出一个新的远程库,形成一个新的远程库分支,从而在这个新的分支远程库上进行一系列操作。若想要和原远程库进行合并(merge),此时必须先提出请求,获得团队内成员许可后,方可合并。
GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub。官方网址为:https://github.com/(需要外网进入)。
在这里,你能找到你感兴趣的项目代码仓库,从而解决你学习和工作的需求,另一方面,它还可以让你与世界各地的开发人员协同开发和交流你们所感兴趣的项目!
Repository
:简称 Repo
,可以理解为 “仓库”,我们的项目就存放在仓库之中。也就是说,如果我们想要建立项目,就得先建立仓库;有多个项目,就建立多个仓库。Issues
:可以理解为 “问题”。举一个简单的例子,如果我们开源一个项目,如果别人看了我们的项目,并且发现了bug,或者感觉那个地方有待改进,他就可以给我们提出 Issue
,等我们把 Issues
解决之后,就可以把这些 Issues
关闭;反之,我们也可以给他人提出 Issue
。Star
:可以理解为 “点赞”。当我们感觉某一个项目做的比较好之后,就可以为这个项目点赞,而且我们点赞过的项目,都会保存到我们的 Star
之中,方便我们随时查看。在 GitHub 之中,如果一个项目的点星数能够超百,那么说明这个项目已经很不错了。fork
:派生,可以理解为“拉分支”,把别人的代码,克隆到你自己的仓库,Github 的术语叫做 fork
。如果我们对某一个项目比较感兴趣,并且想在此基础之上开发新的功能,这时我们就可以 Fork
这个项目,这表示复制一个完全相同的项目到我们的 GitHub 账号之中,而且独立于原项目。之后,我们就可以在自己复制的项目中进行开发了。pull request
:是一种通知机制。你修改了他人的代码,将你的修改通知原来的作者,希望他合并你的修改,这就是 Pull Request
,简称 PR
,也可以理解为“提交请求”。在现实项目中,即使自己对某个 repo
的特定分支有写入权限,也可以提 PR
来修改,因为这是 code review 的一种方式,让团队的其他人看一看改的咋样。Merge
:可以理解为 “合并”。如果别人 Fork
了我们的项目,对其进行了修改,并且提出了 Pull 请求
,这时我们就可以对这个 Pull 请求
进行审核。如果这个 Pull 请求
的内容满足我们的要求,并且跟我们原有的项目没有冲突的话,就可以将其合并到我们的项目之中。当然,是否进行合并,由我们决定。Watch
:可以理解为 “观察”。如果我们 Watch
了一个项目,之后,如果这个项目有了任何更新,我们都会在第一时候收到该项目的更新通知。Gist
:如果我们没有项目可以开源或者只是单纯的想分享一些代码片段的话,我们就可以选择 Gist
。不过说实话,如果不 FQ
的话,Gist
并不好用。在对 Git 和 GitHub 有了充分了解之后,我们选择 GitHub 作为 Git 的远程托管中心,讲一讲如何进行一系列的 Git 配置。首先,我们得有一个 GitHub 账号,这个直接去官网注册即可,注册流程在此就不赘述了。
Add a README file
:如果勾选,则创建仓库的同时会创建README
文件。
Add .gitignore
:如果勾选,则创建仓库时会生成.ignore
文件,.ignore
文件可以配置哪些文件应该被 Git 忽略掉,不管理。
Choose a license
:如果勾选,则可以说明一个证书,比如写上该项目可以被使用但不能商业的声明信息。
另外,GitHub 还提示了我们如何用命令行的形式 新建远程库、推送已有本地库以及向远程库中添加代码。由于本地库文件已存在,因此我们直接推送即可。我们复制那三行命令如下,进行一一讲解:
git remote add origin https://github.com/***/git_test.git
git branch -M main
git push -u origin main
首先,我们来理解第一行命令,它表示给远程库的 HTTPS
链接起一个别名为 origin
,方便后续使用命令行时,不用每次都输入一大长串字符。一般情况下,别名和本地库名一致,因此建议此处别名为 git_test
。执行一下命令:
git remote add git_test https://github.com/***/git_test.git
并再次执行 git remote -v
查看所有别名:
注意: 此时出现两个别名都是一样的,但分别代表 fetch
和 push
,也就是说,这两个操作的别名通用。
此时我们再分析后两行代码:
git branch -M main
git push -u git_test main
对于 git branch -M main
命令,它代表的是将现处分支修改成 main
,此处由于我们不想修改,因此无需执行这行代码,直接推送即可。推送本地库到远程库的基本语法为:
git push 远程库链接/别名 分支名
因此,我们执行 git push git_test master
,由于要使用外网,因此这一步对网络要求比较高。如果链接成功,会弹出一个 Connect to GitHub
的小框,提示我们登陆 GitHub,登陆方式有两种:选择浏览器的账号登陆 和 口令登陆。
此时可自行选择,比如此时我浏览器已经登陆了,点击 选择浏览器的账号登陆 > 授权 即可。
此时,Git 也提示,上传远程库成功了,同时我们在 GitHub 远程库上也能看到 test.cpp
代码已上传成功。
当团队成员共同维护一个远程库时,有时别的成员对远程库进行了修改并提交了,这时我们会发现,我们本地库中的文件与远程库不一致,需要更新一下本地库内容,也称拉取远程库到本地库。基本语法为:
git pull 远程库链接/别名 分支名
因此,我们执行 git pull git_test master
命令:
此时,Git 提示我们更新成功。由于我们并未对远程库里的文件进行修改,因此没有本地库文件修改的提示信息。
当我们在 GitHub 上发现感兴趣的远程库时,我们可以选择将其克隆(clone)到本地库中。基本语法为:
git clone 远程库链接
我们试着在本地新建一个文件夹,打开 Git bash
,执行 git clone https://github.com/***/git_test
命令:
此时,远程库中的全部内容都克隆(也可以理解成下载)到本地库中了。
注意: clone
操作会做三件事:1、拉取代码;2、初始化本地库;3、创建默认别名(origin)。