0


Git远程操作

目录

理解分布式版本控制系统

之前文章所分享的所有内容(工作区,暂存区,版本库等待),都是在本地的!而我们的Git其实是分布式版本控制系统!

可以简单理解为,我们每个⼈的电脑上都是⼀个完整的版本库,这样你⼯作的时候,就不需要联⽹
了,因为版本库就在你⾃⼰的电脑上。如果想让对方也能看到你所做的修改,那就需要将这些东西推送给对方~~

远程仓库

Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。怎么进行分布?

一开始有一台机器具有一个原始版本库,此后别的机器对他"克隆"。

我们将自己的代码推送至远程的服务器,让其他人能够看到我们的推送,实现多人开发合作

这里我们可以登录GitHub网站,这个网站能提供对Git仓库的托管服务的。只要注册一个账号,就可以免费获得Git远程仓库

但github是国外的网站,速度比较慢。国内的话用码云gitee快的多,这里我们就使用gitee了~~

新建远程仓库:

填写基本信息:

这样就成功创建了我们自己的仓库,且该仓库就一个主分支master

克隆远程仓库:

  • HTTP

克隆远端仓库到本地,需要用到git clone命令,后面跟上远端仓库的链接即可

SSH协议和HTTPS协议是Git最常使⽤的两种数据传输协议。SSH协议使⽤了公钥加密和公钥登陆机制,体现了其实⽤性和安全性,使⽤此协议需要将我们的公钥放上服务器,由Git服务器进⾏管理。使⽤HTTPS⽅式时,没有要求,可以直接克隆下来。

注意这里仓库改成开源可以直接clone~~

  • SSH

直接使用的话会报错,并不能直接git clone下来,原因是因为没有添加公钥到远端库中,服务器拒接了我们clone链接。需要手动设置一下

第一步:

创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看目录有没有id_rsa和id_rsa.pub这两个文件,如果有就直接下一步,没有的话创建一下:

ssh-keygen -t rsa -C "自己的gitee邮箱"

顺利的话.ssh目录下就有这两个文件:id_rsa是私钥不能泄露,id_rsa.pub是公钥,可以放心告诉别人

第二步:

添加自己的公钥到远端仓库

对设置中的SSH公钥进行设置

点击确认后,需要对你进行认证,输入你的账号密码即可。至此,ssh的准备工作搞定,接下来的clone就畅通无阻了

如果有多个⼈协作开发,GitHub/Gitee允许添加多个公钥,只要把每个⼈的电脑上的Key都添加到GitHub/Gitee,就可以在每台电脑上往GitHub/Gitee上提交推送了

当我们从远程仓库克隆后,实际上Git会⾃动把本地的maste分⽀和远程的master分⽀对应起来,并且,远程仓库的默认名称是origin 。在本地我们可以使⽤ git remote 命令,来查看远程库的信息

  • git remote

  • git remote -v

更详细一点~~

上面显示了可以抓取和推送的origin地址,如果没有推送权限,就看不到push地址

向远程仓库推送:

本地已经clone成功远程仓库后,我们便可以向仓库中提交内容,例如新增一个file.txt文件:

如果我们之前设置过全局的name和e-mail,这两项配置需要和gitee上配置的⽤⼾名和邮箱⼀致,否则会出错。或者从来没有设置过全局的name和e-mail,那么我们第⼀次提交时也会报错。这就需要我们重新配置下了,同样要注意需要和gitee上配置的⽤⼾名和邮箱⼀致

提交之后就可以推送了:

git push <远程主机名> <本地分⽀名>:<远程分⽀名>

# 如果本地分⽀名与远程分⽀名相同,则可以省略冒号:

git push <远程主机名> <本地分⽀名>

此时我们要将本地的master分支推送到origin主机的master分支 ,则可以:

git pull <远程主机名> <远程分⽀名>:<本地分⽀名>

# 如果远程分⽀是与当前分⽀合并,则冒号后⾯的部分可以省略。

git pull <远程主机名> <远程分⽀名>

这就是我们新提交的文件

从远端仓库拉取:

我们先在gitee仓库中对file1进行修改~

此时,远程仓库是要领先于本地仓库⼀个版本,为了使本地仓库保持最新的版本,我们需要拉取下远端代码,并合并到本地。Git提供了 git pull 命令,该命令⽤于从远程获取代码并合并本地的版
本。格式如下 :

git pull <远程主机名> <远程分⽀名>:<本地分⽀名>

# 如果远程分⽀是与当前分⽀合并,则冒号后⾯的部分可以省略。

git pull <远程主机名> <远程分⽀名>

此时终端中也有了gitee上修改的内容,注意pull是拉取并合并~~


配置Git

忽略特殊文件:

在⽇常开发中,我们有些⽂件不想或者不应该提交到远端,⽐如保存了数据库密码的配置⽂件,那怎么让Git知道呢?在Git⼯作区的根⽬录下创建⼀个特殊的 .gitignore ⽂件,然后把要忽略的⽂件名填进去,Git就会⾃动忽略这些⽂件了

不需要从头写.gitignore文件,gitee在创建仓库的的时候就可以为我们生成,不过要我们手动勾选一下

如果当时没有选,在工作区创建一个也是可以的。无论哪种方式,最终都可以的得到一个完整的.gitignore文件,例如我们想忽略以.so 和 .ini 结尾的所有文件,.gitignore的内容如下

很好理解,*为通配符,后缀为.ini 和 .so都符合上面的形式,这样推送的时候就会被忽略,此时也要记得将.gitignore文件也提交到远端:

但如果有些时候你想强制添加一个文件到Git,但是这个文件被ignore忽略了,根本添加不了,那么就可以用-f强制添加

git add -f [filename] 

或者你发现,可能是 .gitignore 写得有问题,需要找出来到底哪个规则写错了,⽐如说?a.so?⽂件
是要被添加的,可以⽤ git check-ignore 命令检查:

git check-ignore -v a.so

Git?会告诉我们, .gitignore 的第4⾏规则忽略了该⽂件

但这样强制的-f添加进去破坏了.gitignore文件的规则,那么就可以在.ignore中额外添加一条例外规则:

这里的意思就是排除所有.so后缀结尾的文件,但是给a.so一个特例,让他需要被提交

给命令配置别名:

在我们使⽤Git期间,有些命令敲的时候着实让⼈头疼幸运的是,git⽀持对命令进⾏简化!

举个例子将git status 简化成 git st:

git config --global alias.st status

--global 参数是全局参数,也就是这些命令在这台电脑的所有git仓库下都有用,如果不加就只对当前仓库有用

建议是在学习期间,还是多敲敲代码,以后工作再用这个~~


标签管理

理解标签:

标签tag,可以简单理解为对某次commit的一个标识,相当于起了一个别名。例如,在项目发布的某个版本的时候,针对最后一次commit起一个v1.0这样的标签来表示里程碑的意义。

这有啥用?

相较于难以记住的commit id,tag很好的解决了这个问题,因为tag一定要给一个让人好记住,且有意义的名字。当我们要回退到某个重要版本的时候,直接使用tag就能很快定位

创建标签:

在Git中创建非常简单,首先切换到需要打标签的分支上

然后,敲命令git tag [name]即可

  • git tag [name]

可以使用git tag 查看所有标签

  • git tag

默认标签是打在最新提交的commit上的。那如何在指定的commit上打标签呢?方法是找到历史提交的commit id,然后打上就行了

注意标签不是俺时间顺序列出,而是字符排序

可以使用git show [tagname] 查看标签信息的

带有说明的标签:

Git还提供可以创建带有说明的标签,-a指定标签名 ,-m指定说明文字:

git tag -a [name] -m "XXX" [commit_id]

另外打完标签后再看看本地库.git下有什么变化,便于帮你理解

删除标签:

语法:

git tag -d [tag_name]

因为创建的标签都只存储在本地,不会⾃动推送到远程。所以,打错的标签可以在本地安全删除。如果要推送某个标签到远程,使⽤命令 git push origin <tagname>

比如推送v1.0标签

git push origin v1.0

当然如果你有很多标签也可以一次性全部推送到终端:

git push origin --tags

删除远程标签:

这个稍微麻烦一点

第一步:先删除本地

第二步:从远端删除,删除命令也是push,但是格式如下

标签: git clone gitee

本文转载自: https://blog.csdn.net/Obto_/article/details/135814652
版权归原作者 Obto- 所有, 如有侵权,请联系我们删除。

“Git远程操作”的评论:

还没有评论