Gitee应用(1):快速搭建Git环境在不同电脑同步文件

news2024/10/6 16:18:49

一、前言

环境:Windows 11 64位 ;vscode:1.73.1

当你要操作在两台不同的电脑上操作,或许经常会遇到一个问题,就是怎么同步同一个或几个文件,以方便你在不同的电脑上进行同个文件内容的创作。
在申请了公司电脑之后,我就经常会遇到一个问题,工作相关的文件基本都存放在公司的电脑里,但是有时候,比如下班后、周末或节假日,公司电脑没有在身边,这时如果要维护一些数据产品或者交付一些临时急需求,可能就需要用自己的电脑临阵发挥一下光热。
这时候就经常会想起工作电脑里的某个文件,然后发现自己的电脑里没有相关的软件,然后就是“从头再来”……
为了解决这个问题,之前也用过不少在线文档,像石墨、飞书、语雀等,但这些用于写数据产品说明,数据记录或许还可以,拿来记录代码,实在有点不太合适,因为代码一般是在特定的环境里,边写边调试,最终确认下来的,如果再拉到在线文档,1个还好,2个也还行,3个呢,5个呢,10个呢?显然就有点费力了。
之前有了解git这个强大的版本控制工具,说可以记录各个版本的文件,可以查看修改前后的对比,可以各种diy的版本merge等,一直没有好好用起来,这次决定来试一试。

一点重要的说明:科学上网,使用GitHub时,国内的用户经常会遇到访问速度太慢,有时候还会出现无法连接的情况。为了保证有更好的体验,可以使用国内的Git托管服务——Gitee,简单讲,Gitee就是国内版的GitHub。下面就是使用Gitee来搭建相关的环境,并实现文件同步。

二、搭建Git环境

2.1 注册Gitee,并创建远程仓库

打开Gitee,注册一个账号,注册完登录,然后在右上角点击【+】创建一个仓库
image.pngimage.png
创建完仓库会有提示说写README.md文档,有需要可以补充,如果是自己用不写也可以,一般建议写一下,方便了解仓库的作用。
创建完成之后,打开my_work仓库,会看到一个【克隆/下载】的按钮,可以复制相关的链接用于本地仓库的配置。
我的网址是:https://gitee.com/xin-data/my_work.git。
网址的结构很简单,就是域名https://gitee.com/+你的用户名(个人空间的名字)+仓库名+.git后缀。了解这个结构之后,也可以执行拼接网址。
image.png

接下来到本地进行相关的操作配置。

2.2 下载Git安装包,并创建本地仓库

2.2.1 下载安装Git

首先下载Git安装包👉Git安装包下载。打开网页后点击【Windows】标识。
image.png
在跳转的窗口,直接点击download下面的Click here to download即可,网站会自动识别电脑适配的机型,然后做适配。
image.png

注:科学上网,一般在白天下载成功的概率更高哦!

等待下载完成之后,打开安装,可以使用默认的配置一直Next即可。

安装完打开Git Bash,备用。(当然,cmd也可以完成相关的命令,区别在于底层操作系统不同,bash使用Unix,cmd是DOS。)

注:如何找到Git Bash——可以通过安装路径找到它(如果不知道安装在哪里,可以打开cmd,输入where git),有的电脑右击桌面会有一个Git Bash Here(就是Git Bash),或者在开始菜单找到它。

2.2.2 创建本地仓库

创建本地仓库,其实它本质上就是建一个文件夹,只是在Git有一个更高大上的名字叫仓库。事实上,也是有一点不同的,就是仓库需要通过一些配置才可以和远程仓库关联上。
假设我在D盘下建一个文件夹叫gitee用来存放所有的仓库,等下直接从远程仓库把test仓库克隆(同拷贝)下来。即:

d:\gitee

2.3 配置ssh key,关联本地和远程仓库

本地和远程的准备工作做完了,接下来就是打通二者的关联。在刚刚打开的的Git Bash上依次输入以下命令。
先做一些基本配置:

$ cd d:\\gitee  #切换路径
$ git init      #初始化仓库
$ git config --global user.name "【你的用户名】"  #声明操作的用户名字,可diy,会出现在提交记录中
$ git config --global user.email "【你的邮箱】"   #声明操作的用户邮箱,会出现在提交记录中

一个特别小但是特别重要的提示:Git Bash的复制快捷键是Ctrl+insert,粘贴是shift+insert。

接着生成密钥,中间会有一个询问过程,全部敲enter键,一般是有3次。

$ ssh-keygen -t rsa -C "【你的邮箱】"             #生成密钥ssh

在生成密钥ssh返回的结果中,有两个路径特别重要,记录着公钥和私钥,如下红圈。

Your identification has been saved in /c/Users/55414/.ssh/id_rsa # 密钥路径
Your public key has been saved in /c/Users/55414/.ssh/id_rsa.pub # 公钥路径

image.png
接下来用cat+路径查看对应的文件内容,以下命令会返回公钥内容,复制后添加到gitee上就可以进行联通了。登录Gitee后点击头像>设置>ssh公钥,根据提示粘贴并取个名字备忘,链接:

$ cat /c/Users/55414/.ssh/id_rsa.pub  # 查看公钥,注意改为你自己的路径

image.png
添加完确定,然后回到Git Bash,输入一下命令查看是否添加成功

$ ssh -T git@gitee.com  # 查看是否添加ssh成功

接下来连接一下远程,需要用到2.1提及的那个链接。我的网址是:https://gitee.com/xin-data/my_work.git,所以我的命令如下,你只要把xin-data改为你自己的用户名、把my_work改为你自己的仓库即可。

$ git remote add origin https://gitee.com/xin-data/my_work.git # 链接远程库origin

接下来可以使用以下命令看看连接的远程仓库地址

$ git remote -v   # 查看链接的远程库

至此,基本完成环境的搭建。

三、基本的文件操作

先克隆一下远程的仓库:

$ git clone https://gitee.com/xin-data/my_work.git

注意,这时在接着2.3之后的步骤,也就是说在d:\\gitee路径下操作的,如果是新打开的Git Bash,需要先切换路径cd d:\\gitee

克隆完之后,进入my_work仓库,再继续3.1的操作。

$ cd d:\\gitee\\my_work  #切换路径
#或者
$ cd my_work             #切换路径

3.1 通过命令行操作

操作前可以先设置一下字符集,避免中文乱码,具体操作如下,在Git Bash的空白处右击>options(选项)>text(文本)>locale(本地),选择zh_CN,这时后面的character set字符集会自动填充UTF-8(如果没有自行选择)>save(保存)。
image.png

3.1.1 新增并提交文件

创建文件,可使用vi+文件名的方式。输入命令后回车,会进入vim编辑器,默认是命令模式,可敲键盘i(insert)键进入编辑模式,可敲入相关文本等信息,完成编辑之后输入Esc键退出编辑模式,进入一开始的命令模式。这是可以根据以下需求输入对应的命令:

  • 保存并退出
    • 英文模式下输入:wq,然后回车(write and quit)。
    • 大写英文模式下输入ZZ,然后回车。
  • 不保存退出:
    • 英文模式下输入:q!,然后回车。
    • 英文模式下输入:qa!,然后回车。
$ vi test.txt    #打开/创建文件,如果文件不存在则新增,这里我创建一个test.txt文件
$ rm test.txt    #删除文件

保存好文件之后,接下来就是提交并发布到远程仓库。

$ git add test.txt                 #将工作区文件提交到暂存区
$ git commit -m "20221209测试提交" #将暂存区文件提交到本地版本库
$ git push -u origin master        #推送到远程库,首次需要-u,之后可省略,master为分支名

如果有多个文件,都要add,有多种方式可供参考:
假设my_work/test文件夹下有两个文件test1.txttest2.txt都要提交,在add阶段可以有以下几种方式:

#逐一提交
$ git add test1.txt                 #一个个添加
$ git add test2.txt                 #一个个添加
#一次提交多个
$ git add test1.txt test2.txt       #一次多个
#指定文件夹下所有文件
$ git add my_work/*                 #指定某文件夹下所有
$ git add my_work/*.txt             #指定某文件夹下所有.txt文件
$ git add my_work/test*             #指定某文件夹下所有test*文件
#将所有文件都add一遍
$ git add *                         #添加所有文件
$ git add --all                     #添加所有文件

接上面假设,add多个文件,然后一起commit会给所有的文件都备注-m 后面的信息。如使用以下命令提交之后,会给test1.txttest2.txt都备注20221209测试提交

$ git commit -m "20221209测试提交"

如果要为每一个文件添加不同的备注,可以一个一个add,每add一个,commit -m一次,或者在commit提交的时候,也可以指定文件备注。

$ git add test1.txt             
$ git commit -m "提交test1.txt" 
$ git add test2.txt             
$ git commit -m "提交test2.txt" 
#或者
$ git add test1.txt test2.txt               #一次多个add
$ git commit -m "提交test1.txt" test1.txt   #指定文件名,每个单独加备注
$ git commit -m "提交test2.txt" test2.txt   #指定文件名,每个单独加备注

也可以多行备注

$ git commit -m "commit title
>
> commit description"

#或者,一个-m一行
$ git -m "commit title" -m "commit description"
#或者,不加-m,直接使用以下命令,这时候会弹出一个vim编辑器可以编写备注信息。
#注意,此时vim编辑器第1行默认是标题,第2行开始是描述。
$ git commit

3.1.2 拉取远程文件

常用的有两种方法:git pull <remote>git fetch <remote> <branch>

  • git pull <remote>:从远程库<remote>抓取所有分⽀并合并到本地仓库。
  • git fetch <remote> <branch>:从远程库<remote>抓取指定分支到本地仓库。去掉将抓取远程所有分⽀。
  • git pull <remote>=git fetch <remote>+git merge <remote>

注意:当本地库和远程库的文件冲突时,最后使用git fetch,然后自行对比解决冲突,可以在Git Bash分别查看两个文件,对比差异,或者使用第三方可视化工具(如vscode)查看;如果直接git pull可能会出现一些逻辑不恰的合并。如果远程版本比本地版本更新,可以直接用git pull更新。
像我如果操作文本之前先pull一下,再更新文件,基本上不会出现冲突,但是从学习角度,可以尝试一下冲突~~

$ git pull origin  #拉取远程库文件并合并到本地仓库
#或者
$ git fetch origin #拉取远程库文件
$ git merge origin #合并到本地仓库,将origin合并到当前分支

3.2 通过vscode操作

经过前面的铺垫,这时候打开vscode,打开刚刚作为本地仓库的文件夹(如我的是d:\gitee\my_work)。
image.png
这时候打开左侧栏第三个Git的图标,就可以进行可视化的操作本地仓库和远程仓库的链接,任何改动,在该图标上便会有相关的提示(比如我下面的截图,有一个change信息)。
image.png
这个Changes内容怎么提交呢?其实也很简单,add命令相当于下图的+,文件后面的+可以进行单文件添加,Changes一栏的+可以批量添加。
image.png
点了+后,出现一个暂存区Staged Changes(如下图),点击蓝色按钮commit
image.png
这时候会弹出一个文本框,前面是一些说明,大意是“请为您的更改输入提交消息。以“#”开头的行将被忽略,空消息将终止提交。在分支master上,你的分支是最新的’origin/master’。”

Please enter the commit message for your changes. Lines starting with ‘#’ will be ignored, and an empty message aborts the commit.
On branch master ,Your branch is up to date with ‘origin/master’.

image.png
也就是说随便输入个信息便可以提交。输入完备注后,点击文件右上角的对钩,便可commit(相当于git commit
image.png
接下来就是发布到远程仓库(如下图),可以点击Sync Changes按钮,点完会提示该按钮是pull and push,也可以点击右上角的···,选择push
image.png
提交之后,可以在Gitee上看到对应的文件及备注,如下图。
image.png

四、小结

备忘录:

  • 先注册Gitee,并创建远程仓库;
  • 下载Git安装包,并安装;
  • 创建本地仓库,然后配置ssh key,配置命令和文件操作命令整合如下:
$ cd d:\\gitee  #切换路径
$ git init      #初始化仓库
$ git config --global user.name "【你的用户名】"  #声明操作的用户名字,可diy,会出现在提交记录
$ git config --global user.email "【你的邮箱】"   #声明操作的用户邮箱,会出现在提交记录中
$ ssh-keygen -t rsa -C "【你的邮箱】"             #生成密钥ssh,中间会有一个询问过程,全部敲enter键,一般是有3次。可能未必是邮箱,只是邮箱是唯一的。需要唯一而已
$ cat /c/Users/55414/.ssh/id_rsa.pub              #查看公钥,注意改为你自己的路径,添加到gitee的设置>ssh公钥中,链接:https://gitee.com/profile/sshkeys

$ ssh -T git@gitee.com                            #查看是否添加ssh成功
$ git remote add origin git@gitee.com:xin-data/my_work.git # 链接远程库origin
$ git remote -v                                   #查看链接的远程库

#克隆远程库
$ git clone https://gitee.com/xin-data/my_work.git
#切换路径
$ cd my_work

#文件操作
$ touch file     #创建文件,空文件
$ vi test.txt    #打开/创建文件,如果文件不存在则新增,这里我创建一个test.txt文件
$ rm test.txt    #删除文件
##vim编辑器操作
#i(insert)键进入编辑模式,Esc键退出编辑模式,进入命令模式。
#命令模式下:
#- 保存并退出
#	 - 英文模式下输入:wq,然后回车(write and quit)。
#  - 大写英文模式下输入ZZ,然后回车。
#- 不保存退出:
#	 - 英文模式下输入:q!,然后回车。
#	 - 英文模式下输入:qa!,然后回车。

#提交操作
$ git add test.txt                 # 将工作区文件提交到暂存区
$ git commit -m "20221209测试提交" # 将暂存区文件提交到本地版本库
$ git push -u origin master        # 推送到远程库,首次需要-u,之后可省略,master为分支名
##多文件add
$ git add test1.txt                   # 一个个添加
$ git add test2.txt                   # 一个个添加
$ git add test1.txt test2.txt         # 一次多个
$ git add my_work                     # 指定某文件夹
$ git add my_work/*                   # 指定某文件夹下所有
$ git add my_work/*.txt               # 指定某文件夹下所有.txt文件
$ git add my_work/test*               # 指定某文件夹下所有test*文件
$ git add *                           # 添加所有文件
$ git add --all                       # 添加所有文件

#多文件commit
##多文件同一个备注
$ git commit -m "20221209测试提交"    
##多文件不同备注
$ git add test1.txt             
$ git commit -m "提交test1.txt" 
$ git add test2.txt             
$ git commit -m "提交test2.txt" 
#或者
$ git add test1.txt test2.txt               #一次多个add
$ git commit -m "提交test1.txt" test1.txt   #指定文件名,每个单独加备注
$ git commit -m "提交test2.txt" test2.txt   #指定文件名,每个单独加备注

#多行备注
$ git commit -m "commit title
>
> commit description"
#或者,一个-m一行
$ git -m "commit title" -m "commit description"
#或者,不加-m,直接使用以下命令,这时候会弹出一个vim编辑器可以编写备注信息。
#注意,此时vim编辑器第1行默认是标题,第2行开始是描述。
$ git commit

#拉取文件
$ git pull origin  #拉取远程库文件并合并到本地仓库
#或者
$ git fetch origin #拉取远程库文件
$ git merge origin #合并到本地仓库,将origin合并到当前分支

可选方式,通过vscode可视化操作,需要先安装vscode。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java难点攻克】「NIO和内存映射性能提升系列」彻底透析NIO底层的内存映射机制原理与Direct Memory的关系

NIO与内存映射文件 Java类库中的NIO包相对于IO包来说有一个新功能就是 【内存映射文件】&#xff0c;在业务层面的日常开发过程中并不是经常会使用&#xff0c;但是一旦在处理大文件时是比较理想的提高效率的手段&#xff0c;之前已经在基于API和开发实战角度介绍了相关的大文…

Java Math类

JavaMath类\huge{Java \space Math类}Java Math类 Math类 包含执行基本数字运算的方法&#xff0c;Math类没有提供公开的构造器。 MathMathMath类本质就是一个工具类&#xff0c;提供许多方法用于其他类调用&#xff0c;但是无法创建子类对象。 常用方法 ①. abs()取绝对值…

CANoe测试的两种方式Test Module 和 Test Unit对比,你常用哪种呢?

&#x1f345; 我是蚂蚁小兵&#xff0c;专注于车载诊断领域&#xff0c;尤其擅长于对CANoe工具的使用&#x1f345; 寻找组织 &#xff0c;答疑解惑&#xff0c;摸鱼聊天&#xff0c;博客源码&#xff0c;点击加入&#x1f449;【相亲相爱一家人】&#x1f345; 玩转CANoe&…

前端接口联调时传的参数是array数组形式处理

情景&#xff1a;使用van-uolaoder组件上传多个图片后调用保存按钮&#xff0c;这时由于存在多张图片&#xff0c;调用接口时前端传的参数就是数组形式。&#xff08;前端传的数组要先转为字符串&#xff09; 处理方法是&#xff1a; 1. 先确定后端使用什么注解&#xff0c;如…

Gerb视图支持新表单和旧表单

Gerb视图支持新表单和旧表单 GerbView生产高级软件Companions&#xff0c;但也易于替换、打印和查看HPGL、HPGL/2、Excellon和国际象棋文件。该程序支持RS274D和RS274X。您可以使用此软件将旧格式和标准RS274D转换为具有默认信息的新类型RS274X。Gerbview将致力于展示和绘制您的…

计算机毕业设计django基于python租房系统-房屋租赁系统

项目介绍 在各学校的教学过程中,租房系统是一项非常重要的事情。随着计算机多媒体技术的发展和网络的普及。采用当前流行的B/S模式以及3层架构的设计思想通过Python技术来开发此系统的目的是建立一个配合网络环境的租房系统的平台,这样可以有效地解决租房系统混乱的局面。 本文…

(P3)python类的特殊方法 init、getitem、len、call

python 类的特殊方法 参考资料 python解释器遇到特殊句法时&#xff0c;会去调用特殊方法&#xff0c;这些特殊方法以双下划线开头。 1、__init __ () 该方法在对象创建时被解释器自动调用。 2、__getitem __ () getitem 获取实例对象的具体内容 p[key] 3、__len __() len …

牛客挑战赛65 D.233求min(二维偏序 树状数组/cdq分治)

题目 给出长度为n(n<1e5)的序列a1,a2,...,an​和b1,b2,...,bn(-1e3<ai,bi<1e3)&#xff0c; 请你找出1≤l≤r≤n&#xff0c;使得min(alal1...ar, blbl1...br)最大&#xff0c;并输出这个值 思路来源 官方题解 LYC_music submission 题解 两种做法&#xff0c; …

Python模块和包的介绍(模块含义、用模块好处、模块分类、包和模块的创建)

&#x1f308; 个人主页&#xff1a;王子玉博客 &#x1f506; 免费专栏&#xff1a;Python基础教程、python常用模块 ❤️ 分享网站&#xff1a; 《Python自学网》&#x1f449;&#x1f449;基础入门到逐步深入 | 适合新手入门到精通 | web开发、爬虫、自动化运维、自动化…

yocto 自动挂载分区(基于stmp32mp1)

yocto 自动挂载分区&#xff08;基于stmp32mp1&#xff09; 上一章我们在stm32mp1开发板上实践了创建分区的过程&#xff0c;本节我们再来分析下上小节创建的分区开机时是怎么完成分区的自动挂载的。 答案就在systemd里面&#xff1a; 下面就来详细分析一下这个几个文件 mo…

C/C++入门003-C语言变量与运算符

文章目录变量常量的概念常量的类型变量的概念定义变量为什么要定义变量如何使用变量&#xff1f;变量初始化修改变量变量之间的值传递如何查看变量的值?变量的作用域printf函数scanf函数函数的参数运算符算数运算符赋值运算符sizeof运算符逗号运算符关系运算符逻辑运算符三目运…

攻击类型的攻击次数分布

攻击类型分析 2018 年&#xff0c;主要的攻击类型 1 为 SYN Flood&#xff0c;UDP Flood&#xff0c;ACK Flood&#xff0c;HTTP Flood&#xff0c;HTTPS Flood&#xff0c; 这五大类攻击占了总攻击次数的 96&#xff05;&#xff0c;反射类攻击不足 3%。和 2017 年相比&…

【Linux网络编程】select多路复用

文章目录前言如何增强服务端的通信能力Linux的设计哲学文件描述符代码讲解以文件方式操作命令行阻塞函数与非阻塞函数轮询select()代码全貌The End前言 我们上节课讲解了服务端的编程(Linux服务端编程初体验) 本节课要讲的是select 提示&#xff1a;以下是本篇文章正文内容&am…

RocketMQ引发的磁盘预警复盘

RocketMQ引发的磁盘预警复盘前言发现问题排查过程Step 1Step 2Step 3Step 4Step 5Step 6Step 7Step 8Step 9解决方式写在最后前言 一款优秀的中间件&#xff0c;参数的缺省值必然是经过反复验证得出的最优解&#xff0c;勿动&#xff01; 发现问题 某台SaaS服务器磁盘不足发出…

kafka的 __consumer_offsets

Zookeeper不适合大批量的频繁写入操作。Kafka 1.0.2将consumer的位移信息保存在Kafka内部的topic中&#xff0c;即__consumer_offsets主题&#xff0c;并且默认提供了kafka_consumer_groups.sh脚本供用户查看consumer信息。 1、创建topic “tp_test_01” [rootnode1 ~]# kafka…

《Linux运维总结:Centos7.6部署二进制mongodb4.4.8三节点副本集群》

一、Mongodb集群模式 1、三种集群介绍 MongoDB有三种集群部署模式&#xff0c;分别为主从复制&#xff08;Master-Slaver&#xff09;、副本集&#xff08;Replica Set&#xff09;和分片&#xff08;Sharding&#xff09;模式。 1、Master-Slaver 是一种主从副本的模式&#x…

自动驾驶之行人轨迹预测数据集

一、 Real Data ETH: Univ. Hotel;750 pedestrians exhibiting complex interactions UCY: Zara01, Zara02 and Uni.780 pedestrians 单应性矩阵&#xff0c;SLAM中的当用多个不同相机拍摄同一个三维平面需要考虑的矩阵&#xff0c;适应场景为平面情况 商场 这个数据集是用双…

Onvif学习

ONVIF onvif&#xff08;Open Network Video Interface Forum&#xff0c;开放型网络视频接口论坛&#xff09;协议. onvif协议涵盖了设备发现、设备配置、事件、PTZ控制、视频分析和实时流媒体直播功能&#xff0c;以及搜索&#xff0c;回放和录像录音管理功能。 先去看许振…

git 常用操作

Git 是一个分布式版本控制系统&#xff0c;用于项目开发中的版本控制。从本质上来讲Git是一个内容寻址(content-addressable)文件系统&#xff0c;并在此之上提供了一个版本控制系统的用户界面。 Git的核心部分是一个简单的键值对数据库(key-value data store)。 你可以向该数据…

XML配置文件、用来约束XML文档:DTD、Schema(类型更多)

上一章properties作为配置文件的内容好像还没讲&#xff1f; properties相对于XML的缺点&#xff1a;如果要运行多个方法&#xff0c;只能在properties配置文件里等号后面加逗号&#xff08;或指定符号&#xff09;隔开&#xff0c;然后再加值&#xff0c;这样累加下去会导致阅…