【Git】远程操作

理解分布式版本控制系统

之前谈论的所有内容(工作区、暂存区、版本库等等)都是存储在本地。而Git其实是分布式版本控制系统,可以理解为每个人的电脑上都是一个完整的版本库,此时工作的时候就不需要联网,当需要多人协作的时候,只需要将各自的修改推送给对方,就可以互相看到对方的修改了。

Git存在分支管理操作,可以进行多人协作开发各自的分支,但是如果多人协作仅仅只在一台电脑或者一台服务器上进行开发,此时多人开发就失去了其应有的意义,效率会大打折扣。

  • Git提交一种操作,每个电脑上都存在一个独立的仓库。当一方进行修改,就将这份修改的内容推送给另一方,另一方就可以看到对方仓库的改动。

此时的分布式版本控制系统的安全性就会高很多,因为每个人的电脑或者服务器中都有完整的版本库,其中一个人的电脑坏掉就可以到其他人那里复制一份。但是在实际使用分布式管理系统的时候,很少存在两个人直接的电脑上推送版本库的修改,因为二者可能不在同一个局域网内,两台电脑相互访问不了。

所以,分布式版本控制系统通常也存在一台不关机的电脑充当"中央服务器",但是这个服务器的作用仅仅是用来方便"交换"修改。

可以将中央服务器的仓库称之为"远程仓库",但是并不需要完全自己搭建一个Git的服务器,有很多网站就是提供Git仓库托管服务的:
GitHubhttps://github.com/

Giteehttps://gitee.com/

克隆远程仓库

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

HTTPS

克隆/下载远端仓库到本地,需要使用git clone命令,后面跟上远端仓库的链接。

  • 指令:git code 远端仓库链接

【注意】不能在gitcode目录下执行,即不能在任意本地仓库所在目录下面使用该指令。

此时的状态:

  • 指令:git remote

【作用】查看远程仓库

  • 指令:git remote -v

【作用】查看远程仓库的详细信息,fetch代表拉取,push代表推送

SSH

使用SSH方式克隆仓库,需要添加公钥到远端库中,否则服务器会拒绝 clone 请求。

报错信息是由于我们没有在远程仓库中配置自己的公钥。

  • 第一步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有 id_rsa 和 id_rsa.pub 这两个文件,如果已经有了,可直接跳到下一步。如果没有,则需要创建SSH Key。

【注意】输入自己的邮箱,然后回车,使用默认值即可。需要在.ssh目录下进行输入指令

此时,就可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的密钥对,id_rsa是私钥,不能泄漏出去,id_rsa.pub是公钥,可以放心地告诉任何人。

  • 第二步:添加自己的公钥到远端仓库
  • 第三步:进行clone 链接

向远程仓库推送

提交前需要注意,需要将全局的name和e-mail这两个配置项和gitee远端仓库配置的用户名和邮箱一致,否则会出错,或者如果没有设置过全局的name和e-mail在提交的时候也会出错。所以需要重新配置即可,需要保证与gitee配置的用户名和邮箱一致。

这里演示创建一个文件,然后将这个文件推送到远程仓库中。

此时需要将本地仓库的内容推送到远端仓库,需要使用git push命令,该命令用于将本地的分支版本上传到远程并合并,命名格式如下:

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

【注意】如果本地分支名与远程分支名相同,则可以省略冒号:

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

此时推送成功。注意这里如果使用的SSH协议,是不需要每一次推送都输入密码的。如果使用的HTTPS协议,是每次推送都需要输入口令的。

拉取远程仓库

当本地仓库领先于远程仓库的时候,就需要进行push操作将本地仓库的内容推送到远端。而当远程仓库的内容领先于本地仓库的时候,则需要进行pull操作将远端仓库的内容拉取的本地。

Git提供git pull命令,该命令用于从远程获取代码并合并本地的版本。

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

【注意】如果本地分支名与远程分支名相同,则可以省略冒号:

  • git pull <远程主机名> <本地分支名>

忽略特殊文件

在日常开发过程中,肯定会存在有些文件不想或者不应该提交到远端,比如保存了数据库密码的配置文件。

可以在Git工作区的根目录下创建一个特殊的.gitignore文件,将需要忽略的文件名称填写进去,Git就会自动忽略这些文件了。如果没有选择这个选项,也可以在工作区创建一个。

【提醒】不需要从头写.gitugnore文件,gitee在创建仓库的时候就会生产,需要勾选.gitignore

例如:想要忽略以.so和.ini结尾的所有文件,.gitignore的内容如下:

bash 复制代码
*.so
*.ini

如果存在一个以上面文件后缀为结尾的文件不进行忽略,第一张方式是通过指令的方式:

  • git add -f [文件名]

【理解】进行强制添加

但是,我们一般是不想破坏.gitignore文件的规则的,在.gitignore文件的内容中编辑,表示不忽略b.so文件。

bash 复制代码
!b.so

当.gitignore文件中维护的内容非常多的时候,此时我们提交一个文件的时候,被忽略了,我们可以查看原因:

指令:git check-ignore -v [文件名]

【理解】查看该文件为何被忽略

配置命令别名

当需要将某个较长的指令简化时,可以配置命令别名。

举例:将git status 简化为git st,对应的命令是:

git config --global alias.st status

【注意】--global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用。如果不加,那么只针对当前的仓库起作用。

举例:将git log --pretty=oneline --abbre-commit命令简化为git lpa

git config --global alias.lpa 'log --pretty=oneline --abbre-commit'

相关推荐
studytosky6 小时前
Linux 基础开发工具(3):Git 控制与 GDB 调试实用指南
linux·运维·服务器·网络·数据库·git
云闲不收7 小时前
AI编程系列——git-worktree并行开发
git·ai编程
秦时明月天明8 小时前
GitLab SSH Key 过期:git pull failed : remote your ssh key has expired
git·ssh·gitlab
桃花岛主708 小时前
命令提交git到github上的步骤
git·github
AI逐月8 小时前
Git 停止追踪已提交文件问题
大数据·git·elasticsearch
是毛毛吧9 小时前
开发环境配置指南:解决 GitHub 连接超时与依赖下载失败的问题
网络·git·网络安全·docker·信息与通信
bj_zhb9 小时前
git stash 用法
git
rockmelodies10 小时前
本地 PyCharm 生成的 Git 仓库与 GitHub 远程仓库关联起来
git·pycharm·github
阿萨德528号10 小时前
Git 与 SVN 对比详解
git·svn