【Git 小妙招】理解并使用 Git 的远程操作(配置远程仓库)
学习完 Git 的一些基础知识后, 本文将带领读者理解分布式版本控制系统, 使用 Git 的远程操作, 自己配置一个本地仓库等等. 本文中间讲解了 Git 相关的远程操作, 理解了什么是分布式版本控制系统, 并且创建了一个 Gitee 的远程仓库, 并学习了如何克隆, 如何推送, 如何拉取, 并学会了配置 Git 的一些基础操作.
文章目录
前言
学习完 Git 的一些基础知识后, 本文将带领读者理解分布式版本控制系统, 使用 Git 的远程操作, 自己配置一个本地仓库等等.
关注收藏, 开始学习吧🧐
1. 分布式版本控制系统
我们⽬前所说的所有内容(⼯作区,暂存区,版本库等等),都是在本地!也就是在你的笔记本或者
计算机上。⽽我们的 Git 其实是分布式版本控制系统!什么意思呢?
可以简单理解为,我们每个⼈的电脑上都是⼀个完整的版本库,这样你⼯作的时候,就不需要联⽹了,因为版本库就在你⾃⼰的电脑上。既然每个⼈电脑上都有⼀个完整的版本库,那多个⼈如何协作呢?⽐⽅说你在⾃⼰电脑上改了⽂件A,你的同事也在他的电脑上改了⽂件A,这时,你们俩之间只需把各⾃的修改推送给对⽅,就可以互相看到对⽅的修改了。
分布式版本控制系统的安全性要⾼很多,因为每个⼈电脑⾥都有完整的版本库,某⼀个⼈的电脑坏掉了不要紧,随便从其他⼈那⾥复制⼀个就可以了。
在实际使⽤分布式版本控制系统的时候,其实很少在两⼈之间的电脑上推送版本库的修改,因为可能你们俩不在⼀个局域⽹内,两台电脑互相访问不了。也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有⼀台充当“中央服务器”的电脑,但这个服务器的作⽤仅仅是⽤来⽅便“交换”⼤家的修改,没有它⼤家也⼀样⼲活,只是交换修改不⽅便⽽已。有了这个“中央服务器”的电脑,这样就不怕本地出现什么故障了(⽐如运⽓差,硬盘坏了,上⾯的所有东西全部丢失,包括git的所有内容)
2. 远程仓库
Git 是分布式版本控制系统,同⼀个 Git 仓库,可以分布到不同的机器上。怎么分布呢?最早,肯定只有⼀台机器有⼀个原始版本库,此后,别的机器可以 “克隆” 这个原始版本库,⽽且每台机器的版本库其实都是⼀样的,并没有主次之分。
你肯定会想,⾄少需要两台机器才能玩远程库不是?但是我只有⼀台电脑,怎么玩?
其实⼀台电脑上也是可以克隆多个版本库的,只要不在同⼀个⽬录下。不过,现实⽣活中是不会有⼈这么傻的在⼀台电脑上搞⼏个远程库玩,因为⼀台电脑上搞⼏个远程库完全没有意义,⽽且硬盘挂了会导致所有库都挂掉。
实际情况往往是这样,找⼀台电脑充当服务器的⻆⾊,每天24⼩时开机,其他每个⼈都从这个“服务器”仓库克隆⼀份到⾃⼰的电脑上,并且各⾃把各⾃的提交推送到服务器仓库⾥,也从服务器仓库中拉取别⼈的提交。
其实完全可以⾃⼰搭建⼀台运⾏ Git 的服务器,不过现阶段,为了学西 Git 就要搭个服务器绝对是⼩题⼤作。好在这个世界上有个叫 GitHub 的神奇的⽹站,从名字就可以看出,这个⽹站就是提供 Git 仓库托管服务的,所以,只要注册⼀个 GitHub 账号,就可以免费获得 Git 远程仓库。
不过 GitHub 是国外的⽹站,速度⽐较慢,为了方便学习,我们文章中统⼀采⽤ Gitee 来托管代码。下面,我们从零开始,使⽤⼀下码云远程仓库。
在学习之前,请未注册过 Gitee 账号的读者,优先注册账号。
2.1 新建远程仓库
新建远程项目仓库:
填写基本信息
创建成功
从创建好的远程仓库中我们便能看到,之前在本地学习过的分⽀,也存在于远程仓库中并被管理起来了。刚创建的仓库有且只有⼀个默认的master分⽀。
2.2 克隆远程仓库
克隆/下载远端仓库到本地,需要使⽤ git clone
命令,后⾯跟上我们的远端仓库的链接,远端仓库的链接可以从仓库中找到:选择“克隆/下载”获取远程仓库链接:
SSH 协议和 HTTPS 协议是 Git 最常使⽤的两种数据传输协议。SSH 协议使⽤了公钥加密和公钥登陆机制,体现了其实⽤性和安全性,使⽤此协议需要将我们的公钥放上服务器,由 Git 服务器进⾏管理。为方便演示,我们使⽤ HTTPS ⽅式来克隆仓库,此方式没有要求,可以直接克隆下来。
- 使⽤ HTTPS ⽅式:
当我们从远程仓库克隆后,实际上 Git 会⾃动把本地的master
分⽀和远程的master
分⽀对应起来,并且,远程仓库的默认名称是origin
。在本地我们可以使⽤git remote
命令,来查看远程库的信息,如:
或者,⽤git remote -v
显⽰更详细的信息:
上⾯显⽰了可以抓取和推送的 origin 的地址。如果没有推送权限,就看不到 push 的地址。推送是什么意思呢,我们继续往下看。
2.3 向远程仓库推送
本地已经 clone
成功远程仓库后,我们便可以向仓库中提交内容,例如新增⼀个 file.txt
⽂件:
1. 新建文件
2. 提交文件
提交时要注意,如果我们之前设置过全局的 name 和 e-mail,这两项配置需要和 gitee 上配置的⽤⼾名和邮箱⼀致,否则会出错。或者从来没有设置过全局的 name 和 e-mail,那么我们第⼀次提交时也会报错。这就需要我们重新配置下了,同样要注意需要和 gitee 上配置的⽤⼾名和邮箱⼀致。如何配置已讲过,在这⾥就不再赘述。
到这⾥我们已经将内容提交⾄本地仓库中,如何将本地仓库的内容推送⾄远程仓库呢,需要使⽤ git push
命令,
该命令⽤于将本地的分⽀版本上传到远程并合并,命令格式如下:
git push <远程主机名> <本地分⽀名>:<远程分⽀名>
# 如果本地分⽀名与远程分⽀名相同,则可以省略冒号:
git push <远程主机名> <本地分⽀名>
此时我们要将本地的 master 分⽀推送到 origin 主机的 master 分⽀,则可以:
可以看到, 首次进行 push 操作时, 由于没有设置用户名和密码, 会让你输入. 用户名和密码就是对应的 Gitee 账号的. 这是因为我们使⽤的是 HTTPS 协议,有个麻烦地⽅就是每次推送都必须输⼊⼝令。
如果使⽤的是 SSH 协议,是不⽤每⼀次推送都输⼊密码的,可以⽅便我们的推送操作。
推送成功后,看看码云远端:
代码已经被推送⾄远端了:
2.4 拉取远程仓库
在 gitee 上点击 README.md ⽂件并在线修改它:
修改内容:
此时,远程仓库是要领先于本地仓库⼀个版本,为了使本地仓库保持最新的版本,我们需要拉取下远端代码,并合并到本地。Git 提供了 git pull 命令,该命令⽤于从远程获取代码并合并本地的版本。格式如下:
git pull <远程主机名> <远程分⽀名>:<本地分⽀名>
# 如果远程分⽀是与当前分⽀合并,则冒号后⾯的部分可以省略。
git pull <远程主机名> <远程分⽀名>
使⽤⼀下:
我们发现,拉取成功了!
3. 配置 Git
3.1 忽略特殊文件
在⽇常开发中,我们有些⽂件不想或者不应该提交到远端,⽐如保存了数据库密码的配置⽂件,那怎么让 Git 知道呢?在 Git ⼯作区的根⽬录下创建⼀个特殊的 .gitignore
⽂件,然后把要忽略的⽂件名填进去,Git 就会⾃动忽略这些⽂件了。
不需要从头写 .gitignore
⽂件,gitee 在创建仓库时就可以为我们⽣成,不过需要我们主动勾选⼀下:
如果当时没有选择这个选择,在⼯作区创建⼀个也是可以的。⽆论哪种⽅式,最终都可以得到⼀个完整的 .gitignore
⽂件,例如我们想忽略以 .so 和 .ini 结尾所有⽂件, .gitignore
的内容
如下:
# 省略选择模本的内容
...
# My configurations:
*.ini
*.so
在 .gitignore
⽂件中也可以指定某个确定的⽂件。
最后⼀步就是把 .gitignore
也提交到远端,就完成了:
接着我们就来验证⼀下.gitignore
⽂件的能⼒,在⼯作区新增两个⽂件 a.so
b.ini
:
检验 .gitignore
的标准就是 git status
命令是不是说 working tree clean
。我们发现 Git 并没有提⽰在⼯作区中有⽂件新增,果然 .gitignore
⽣效了!
但有些时候,你就是想添加⼀个⽂件到 Git,但由于这个⽂件被 .gitignore
忽略了,根本添加不了,那么可以⽤ -f
强制添加:
git add -f [filename]
或者你发现,可能是 .gitignore
写得有问题,需要找出来到底哪个规则写错了,⽐如说 a.so
⽂件是要被添加的,可以⽤ git check-ignore
命令检查:
Git 会告诉我们, .gitignore
的第4⾏规则忽略了该⽂件,于是我们就可以知道应该修订哪个规则。
还有些时候,当我们编写了规则排除了部分⽂件时,例如:
# 排除所有.开头的隐藏⽂件:
.*
但是我们发现 .*
这个规则把 .gitignore
也排除了。虽然可以⽤ git add -f
强制添加进去,但有强迫症的读者还是希望不要破坏 .gitignore
规则,这个时候,可以添加⼀条例外规则:
# 排除所有.开头的隐藏⽂件:
.*
# 不排除.gitignore
!.gitignore
把指定⽂件排除在 .gitignore
规则外的写法就是 ! +⽂件名
,所以,只需把例外⽂件添加进去即可。
3.2 给命令起别名
在我们使⽤ Git 期间,有些命令敲的时候着实让⼈头疼(太⻓了。。),幸运的是,git⽀持对命令进⾏简化!
举个例⼦,将 git status
简化为 git st
,对应的命令为:
git config --global alias.st status
--global
参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有⽤。如果不加,那只针对当前的仓库起作⽤。
不过,个⼈还是不推荐初学者现在去使⽤他,等逐渐熟练了,再去简化⾃⼰的⼯作吧,⽬前所有的命令都要⼿动完成,尽快适应 Git。
总结
✨ 本文中间讲解了 Git 相关的远程操作, 理解了什么是分布式版本控制系统, 并且创建了一个 Gitee 的远程仓库, 并学习了如何克隆, 如何推送, 如何拉取, 并学会了配置 Git 的一些基础操作.
✨ 想了解更多知识, 请持续关注博主, 本人会不断更新学习记录, 跟随我一起不断学习 -> 跳转Git专栏.
✨ 感谢你们的耐心阅读, 博主本人也是一名学生, 也还有需要很多学习的东西. 写这篇文章是以本人所学内容为基础, 日后也会不断更新自己的学习记录, 我们一起努力进步, 变得优秀, 小小菜鸟, 也能有大大梦想, 关注我, 一起学习.
再次感谢你们的阅读, 你们的鼓励是我创作的最大动力!!!!!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)