【Git版本控制 03】远程操作

目录

一、克隆远程仓库

二、推送远程仓库

三、拉取远程仓库

四、忽略特殊文件

五、命令配置别名


一、克隆远程仓库

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

找⼀台电脑充当服务器的⻆⾊,每天24⼩时开机,其他每个⼈都从这个“服务器”仓库克隆⼀份到⾃⼰的电脑上,并且各⾃把各⾃的提交推送到服务器仓库⾥,也从服务器仓库中拉取别⼈的提交。

国内外有很多这样的服务器,如Github、Gitee……

新建远程仓库的操作需要在Gitee或Github服务器网站上进行,在新建远程仓库成功之后,需要通过 git clone 命令远程仓库 克隆/下载 到本地。

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

使用HTTPS方式,输入用户名、密码后便可直接克隆,非常简单。

使用SSH方式,需要先创建 SSH Key,在用户主目录下,看看有没有 .ssh 目录,如果有,再看看有没有 id_rsa.pub 和 id_rsa 两个文件,如果有了,说明当前用户已经创建了SSH Key。

如果没有,则需要输入 ssh-keygen -t rsa -C "邮箱" 再一路回车进行创建。

创建成功之后,通过 cat ~/.ssh/ssh_rsa.pub 查看自己的公钥,公钥是可以告诉别人的,将公钥复制到 Git 服务器的SSH公钥选项中,就可以通过SSH链接克隆远程仓库了。

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

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

# 通过 git remote -v 显示更详细的信息(base) [root@localhost git-learning]# git remote
origin
(base) [root@localhost git-learning]# git remote -v
origin  git@gitee.com:hdu-a-chao/git-learning.git (fetch)
origin  git@gitee.com:hdu-a-chao/git-learning.git (push)
(base) [root@localhost git-learning]# # 上面显示了可以抓取和推送的地址,也代表了我们有抓取和推送的权限。

二、推送远程仓库

# 使用 git push 将本地内容推送到远程仓库
# 完整命令格式:git push <远程主机名> <本地分⽀名>:<远程分⽀名>
# 如果本地分⽀名与远程分⽀名相同,可以简写为:git push <远程主机名> <本地分⽀名>
# 如果当前分支只有一个远程分支,可以简写为:git push(base) [root@localhost git-learning]# ls
README.en.md  README.md
(base) [root@localhost git-learning]# vim file1
(base) [root@localhost git-learning]# cat file1
hello git
(base) [root@localhost git-learning]# git add .
(base) [root@localhost git-learning]# git commit -m "add first file"
[master ec3bb79] add first file1 file changed, 1 insertion(+)create mode 100644 file1
(base) [root@localhost git-learning]# git push
Counting objects: 4, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 302 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [1.1.5]
remote: Set trace flag b64b1287
To git@gitee.com:hdu-a-chao/git-learning.gitdd56a90..ec3bb79  master -> master
(base) [root@localhost git-learning]#

三、拉取远程仓库

在 Gitee 上点击 file1 ⽂件并在线修改它:

这时的远程仓库是领先本地仓库一个版本的,如果我们此时需要将本地仓库内容直接推送到远程仓库是会报错的,因为版本不一致,所以需要通过 git pull 从远程获取代码并合并本地的版本。

# 完整命令:git pull <远程主机名> <远程分⽀名>:<本地分⽀名>
# 如果远程分⽀是与当前分⽀合并,可简写为:git pull <远程主机名> <远程分⽀名>
(base) [root@localhost git-learning]# git pull origin master
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
来自 gitee.com:hdu-a-chao/git-learning* branch            master     -> FETCH_HEAD
更新 ec3bb79..1ccab43
Fast-forwardfile1 | 1 +1 file changed, 1 insertion(+)
(base) [root@localhost git-learning]# cat file1
hello git
Git 在线修改!(base) [root@localhost git-learning]#

四、忽略特殊文件

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

不需要从头写 .gitignore ⽂件,gitee在创建仓库时就可以为我们⽣成,不过需要我们主动勾选⼀下:

如果当时没有选择这个选择,在⼯作区创建⼀个也是可以的。⽆论哪种⽅式,最终都可以得到⼀个完整的 .gitignore ⽂件,例如我们想忽略以 .so 和 .ini 结尾所有⽂件, .gitignore 的内容如下:

# 省略选择模本的内容
...# My configurations:
*.ini
*.so
(base) [root@localhost git-learning]# ls
file1  file.ini  file.so  README.en.md  README.md
(base) [root@localhost git-learning]# vim .gitignore 
(base) [root@localhost git-learning]# cat .gitignore 
*.ini
*.so
(base) [root@localhost git-learning]# touch file.ini file.so
(base) [root@localhost git-learning]# ls
file1  file.ini  file.so  README.en.md  README.md
(base) [root@localhost git-learning]# git add .
(base) [root@localhost git-learning]# git commit -m "add files: file.ini file.so"
[master 8d78346] add files: file.ini file.so1 file changed, 2 insertions(+)create mode 100644 .gitignore
(base) [root@localhost git-learning]# git push origin master
Counting objects: 4, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 343 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [1.1.5]
remote: Set trace flag dd40f5b4
To git@gitee.com:hdu-a-chao/git-learning.git1ccab43..8d78346  master -> master
(base) [root@localhost git-learning]# 

(base) [root@localhost git-learning]# touch file1.ini file1.so
(base) [root@localhost git-learning]# ls
file1  file1.ini  file1.so  file.ini  file.so  README.en.md  README.md
(base) [root@localhost git-learning]# git status
# 位于分支 master
无文件要提交,干净的工作区
(base) [root@localhost git-learning]# # 分析原因,原来是因为被 .gitignore 选定的文件会忽略在工作区的修改
# 如果我们想要提交的文件被忽略了,我们可以用 git add -f [file] 强制添加
# 查看某个文件是否被忽略(base) [root@localhost git-learning]# git check-ignore -v file1.so
.gitignore:2:*.so       file1.so
(base) [root@localhost git-learning]## Git会告诉我们, .gitignore 的第2⾏规则忽略了该⽂件,于是我们就可以知道应该修订哪个规则。
# 还有些时候,当我们编写了规则排除了部分⽂件时,例如排除所有.开头的隐藏⽂件: .*
# 但是我们发现 .* 这个规则把 .gitignore 也排除了。
# 虽然可以⽤ git add -f 强制添加进去,但我们也可以编写例外规则:!.gitignore

五、命令配置别名

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

# 将 git status 简化为 git st (base) [root@localhost git-learning]# git config --global alias.st status
(base) [root@localhost git-learning]# git st
# 位于分支 master
无文件要提交,干净的工作区
(base) [root@localhost git-learning]# git status
# 位于分支 master
无文件要提交,干净的工作区
(base) [root@localhost git-learning]# # --global 参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有⽤。
# 如果不加,那只针对当前的仓库起作⽤。

 
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/459498.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

grafana+prometheus+hiveserver2(jmx_exporter+metrics)

一、hiveserver2开启metrics&#xff0c;并启动jmx_exporter 1、修改hive-site.xml文件开启metrics <property><name>hive.server2.metrics.enabled</name><value>true</value> </property> <property><name>hive.service.m…

FPGA_工程_按键控制的基于Rom数码管显示

一 信号 框图&#xff1a; 其中 key_filter seg_595_dynamic均为已有模块&#xff0c;直接例化即可使用&#xff0c;rom_8*256模块&#xff0c;调用rom ip实现。Rom_ctrl模块需要重新编写。 波形图&#xff1a; 二 代码 module key_fliter #(parameter CNT_MAX 24d9_999_99…

LEETCDE 220. 存在重复元素 III

class Solution { public:long long size;bool containsNearbyAlmostDuplicate(vector<int>& nums, int indexDiff, int valueDiff) {//桶排序unordered_map<long,long> m;sizevalueDiff1;for(int i0;i<nums.size();i){//控制数值long long idxgetID(nums[i…

实践动物姿态估计,基于最新YOLOv8全系列【n/s/m/l/x】参数模型开发构建公共场景下行人人员姿态估计分析识别系统

姿态估计&#xff08;PoseEstimation&#xff09;在我们前面的相关项目中涉及到的并不多&#xff0c;CV数据场景下主要还是以目标检测、图像识别和分割居多&#xff0c;最近正好项目中在使用YOLO系列最新的模型开发项目&#xff0c;就想着抽时间基于YOLOv8也开发构建实现姿态估…

【Linux】gdb调试与make/makefile工具

目录 导读 1. make/Makefile 1.1 引入 1.2 概念 1.3 语法规则 1.4 示例 2. Linux调试器-gdb 2.1 引入 2.2 概念 2.3 使用 导读 我们在上次讲了Linux编辑器gcc\g的使用&#xff0c;今天我们就来进一步的学习如何调试&#xff0c;以及makefile这个强大的工具。 1. mak…

STM32F1 - 工程模板_标准外设库

Project 1> 程序框架2> 文件结构3>标准外设库 - 头文件包含关系4> 移植中出现的错误4.1> 编译器版本选择4.2> 工程宏定义 N> 资料链接 1> 程序框架 根据硬件分层&#xff0c;把软件分层 2> 文件结构 为方便管理&#xff0c;将启动文件startup_stm…

零代码3D可视化快速开发平台

老子云平台 老子云3D可视化快速开发平台&#xff0c;集云压缩、云烘焙、云存储云展示于一体&#xff0c;使3D模型资源自动输出至移动端PC端、Web端&#xff0c;能在多设备、全平台进行展示和交互&#xff0c;是全球领先、自主可控的自动化3D云引擎。此技术已经在全球申请了专利…

Zoho Mail 2023:回顾过去,展望未来

当我们告别又一个非凡的一年时&#xff0c;我们想回顾一下Zoho Mail如何融合传统与创新。我们迎来了成立15周年&#xff0c;这是一个由客户、合作伙伴和我们的敬业团队共同庆祝的里程碑。与我们一起回顾这段旅程&#xff0c;探索定义Zoho Mail历史篇章的敏捷性、精确性和创新性…

分布式springboot 3项目集成mybatis官方生成器开发记录

文章目录 说明实现思路实现步骤第一步&#xff1a;创建generator子模块第二步&#xff1a;引入相关maven插件和依赖第三步&#xff1a;编写生成器配置文件第四步&#xff1a;运行查看结果 说明 该文章为作者开发学习记录&#xff0c;方便以后复习和交流主要内容为&#xff1a;…

图数据库 之 Neo4j - Browser 介绍(3)

Neo4j Browser 介绍 Neo4j Browser 中有 3 个模块&#xff0c;侧边栏&#xff0c;Cypher 编辑器与结果栏&#xff0c;在进入 Neo4j Browser 时结果栏会展示欢迎界面。 Cypher 编辑器 Cypher 是一种图形查询语言&#xff0c;用于查询和操作图形数据库。它是 Neo4j 图形数据库的…

提速MySQL:数据库性能加速策略全解析

提速MySQL&#xff1a;数据库性能加速策略全解析 引言理解MySQL性能指标监控和评估性能指标索引优化技巧索引优化实战案例 查询优化实战查询优化案例分析 存储引擎优化InnoDB vs MyISAM选择和优化存储引擎存储引擎优化实例 配置调整与系统优化配置调整系统优化优化实例 实战案例…

qt/c++实现表情选择框

&#x1f482; 个人主页:pp不会算法^ v ^ &#x1f91f; 版权: 本文由【pp不会算法v】原创、在CSDN首发、需要转载请联系博主 &#x1f4ac; 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 实现功能 。编解码的设计 。映射关系设计 。匹配机制设计 演示效…