当前位置: 首页 > news >正文

【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仓库下都有⽤。
# 如果不加,那只针对当前的仓库起作⽤。

 
 

相关文章:

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

目录 一、克隆远程仓库 二、推送远程仓库 三、拉取远程仓库 四、忽略特殊文件 五、命令配置别名 一、克隆远程仓库 Git是分布式版本控制系统&#xff0c;同⼀个Git仓库&#xff0c;可以分布到不同的机器上。怎么分布呢&#xff1f; 找⼀台电脑充当服务器的⻆⾊&#xff…...

【Git】Windows下通过Docker安装GitLab

私有仓库 前言基本思路拉取镜像创建挂载目录创建容器容器启动成功登录仓库设置中文更改密码人员审核配置邮箱 前言 由于某云存在人数限制&#xff0c;这个其实很好理解&#xff0c;毕竟使用的是云服务器&#xff0c;人家也是要交钱的。把代码完全放在别人的服务器上面&#xf…...

flutter 操作mysql

引入模块 dependencies: flutter: sdk: flutter mysql1: ^0.20.0 mysql helper 的代码 import dart:async; import package:mysql1/mysql1.dart; class MySqlHelper { static const _host localhost; static const _port 3333; static const _user user; static c…...

c++阶梯之类与对象(中)< 续集 >

前文&#xff1a; c阶梯之类与对象&#xff08;上&#xff09;-CSDN博客 c阶梯之类与对象&#xff08;中&#xff09;-CSDN博客 前言&#xff1a; 在上文中&#xff0c;我们学习了类的六个默认成员函数之构造&#xff0c;析构与拷贝构造函数&#xff0c;接下来我们来看看剩下…...

GitLag所有操作-汇总

1、MAC Git环境设置 跳转 Git通过Token拉代码&#xff1a; 跳转 Git基础操作&#xff1a;拉、put、删 跳转 Git回滚操作&#xff1a; 跳转 Git回滚操作-复杂 跳转 对于Commit但是还没有push的代码&#xff0c;如果回滚&#xff1a; 跳转...

JSch - 配置SFTP服务器SSH免密登录

文章目录 1. 什么是SFTP2. 什么是Jsch以及它的作用3. Linux中配置SSH密钥登录4. sftp服务器认证机制5. publickey和password两种方式登录sftp的API调用6. 代码可以如下改造&#xff1a; 需求&#xff1a;做一个通过ssh免密登录的需求&#xff0c;是基于原先密码登录sftp服务器的…...

RISC-V指令格式

RISC-V指令格式 1 RISC-V指令集命名规范2 RISC-V指令集组成2.1 基础整数指令集2.2 扩展指令集 3 RISC-V指令格式3.1 指令表述3.2 指令格式 本文属于《 RISC-V指令集基础系列教程》之一&#xff0c;欢迎查看其它文章。 1 RISC-V指令集命名规范 前面提到过RV32I&#xff0c;这是…...

Linux 文件比较工具

在Linux系统中&#xff0c;文件比较是一种常见的任务&#xff0c;用于比较两个文件之间的差异。文件比较可以帮助我们找出两个文件的不同之处&#xff0c;或者确定它们是否完全相同。在Linux中&#xff0c;有多种方法可以进行文件比较。 1. diff 在Linux中&#xff0c;diff命…...

【GAMES101】Lecture 17 材质

目录 材质 漫反射 镜面反射 折射-Snell’s Law Fresnel Reflection / Term&#xff08;菲涅耳项&#xff09; 微表面模型 各向同性与各向异性 BRDF的性质 测量BRDF 材质 渲染方程中的BRDF描述了物体是如何与光线作用的&#xff0c;而物体的材质决定了它看起来是怎么样…...

数模.matlab画图

一、mesh函数 上图是平常用到的方式 例题&#xff1a; 上图的meshgrid函数相当于上上图的前三个指令&#xff08;temp&#xff0c;x,y&#xff09; mash函数&#xff1a; mashc函数&#xff1a; mashz函数&#xff1a; 上图subplot函数的作用是将下标为index的图片放到对应的x&…...

[word] word表格表头怎么取消重复出现? #媒体#笔记#职场发展

word表格表头怎么取消重复出现&#xff1f; word表格表头怎么取消重复出现&#xff1f;在Word中的表格如果过长的话&#xff0c;会跨行显示在另一页&#xff0c;如果想要在其它页面上也显示表头&#xff0c;更直观的查看数据。难道要一个个复制表头吗&#xff1f;当然不是&…...

vue项目开发vscode配置

配置代码片段 步骤如下&#xff1a; 文件->首选项->配置用户代码片段新增全局代码片段起全局代码片段文件名“xxx.code-snippets” 这里以配置vue2初始代码片段为例&#xff0c;配置具体代码片段 {"name": "vue-sph","version": "…...

BUUCTF-Real-[Tomcat]CVE-2017-12615

目录 漏洞描述 一、漏洞编号&#xff1a;CVE-2017-12615 二、漏洞复现 get flag 漏洞描述 CVE-2017-12615&#xff1a;远程代码执行漏洞 影响范围&#xff1a;Apache Tomcat 7.0.0 - 7.0.79 (windows环境) 当 Tomcat 运行在 Windows 操作系统时&#xff0c;且启用了 HTTP P…...

Qt应用软件【协议篇】http协议get、post示例

文章目录 QT Http的APIHTTP GET 请求示例HTTP POST 请求示例伪装chrome浏览器get请求QT Http的API QNetworkAccessManager 作用:管理所有的网络请求,是发送请求和接收响应的中心点。主要功能: 发送HTTP请求(GET, POST, PUT, DELETE等)。处理网络请求的异步回调。管理网络…...

如何选择Centos的替代者

开篇废话&#xff1a;许久许久没有更新博客了。寒假回到故土&#xff0c;大雪虽然没有封路&#xff0c;还是增加了不出门的决心&#xff0c;虽然年岁已高&#xff0c;但是不学习还是不踏实&#xff0c;那就借着写作再继续前行。 背景&#xff1a;信息化部门&#xff0c;掌管着…...

【Java数据结构】ArrayList和LinkedList的遍历

一&#xff1a;ArrayList的遍历 import java.util.ArrayList; import java.util.Iterator; import java.util.List;/*** ArrayList的遍历*/ public class Test {public static void main(String[] args) {List<Integer> list new ArrayList<>();list.add(5);list…...

springboot163美食推荐商城的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…...

[机器学习]K-means——聚类算法

一.K-means算法概念 二.代码实现 # 0. 引入依赖 import numpy as np import matplotlib.pyplot as plt # 画图依赖 from sklearn.datasets import make_blobs # 从sklearn中直接生成聚类数据# 1. 数据加载 # 生成&#xff08;n_samples&#xff1a;样本点&#xff0c;centers&…...

并发编程 java锁机制

1、什么是锁&#xff0c;为什么需要锁&#xff1f; 并发环境下&#xff0c;会存在多个线程对同一个资源进行争抢的情况&#xff0c;假设线程A对资源正在进行修改&#xff0c;此时线程B又对同一资源进行了修改&#xff0c;就会导致数据不一致的问题。为了解决这个问题&#xff…...

Onerugged三防平板厂家丨三年质保承诺丨三防平板PAD

行业领先产品——Onerugged三防平板。凭借着十年的经验&#xff0c;我们深知终端设备在各个行业中的重要性&#xff0c;因此致力于为用户提供高可靠性的解决方案。 Onerugged三防平板以其卓越的性能和全方位的保护功能&#xff0c;在市场上脱颖而出。首先&#xff0c;它拥有IP…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...