版本管理工具 Git 的下载安装及使用

news2024/9/24 17:13:04

1 基本介绍

Git 是目前最流行的分布式版本控制软件

什么是分布式版本控制软件?

  • 所有版本信息仓库全部同步到本地的每个用户
  • 可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时 push 到相应的服务器或其他用户那里。
  • 每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据
  • 更加安全, 不会因为服务器损坏或者网络问题,造成不能工作的情况

Git 下载&安装

2.1 下载

官网地址: https://git-scm.com/

下载版本: Git-2.33.0.2-64-bit.exe

下载慢,可以到镜像下载 : CNPM Binaries Mirror (npmmirror.com)/ 

2.2 卸载

说明:如果安装过,可以卸载,更换版本

卸载步骤:

到 windows 的应用和功能,搜索 git, 卸载即可(如图) 

然后检查环境变量 , 如果有和 Git 相关的,删除即可 

2.3 安装

说明:直接下一步即可,建议安装到非系统盘, 比如 d:\

细节:安装路径不要带中文、空格、特殊字符

验证安装是否成功,在桌面点击右键如图

3 Git 资料 

Git 大全

地址: https://gitee.com/all-about-git

Git 常用命令

https://gitee.com/all-about-git#%E4%BB%93%E5%BA%93

Git 互动学习地址

https://oschina.gitee.io/learn-git-branching/ 

Git 基本配置

4.1 设置用户名与邮箱

说明:使用 Git 前,需要设置你的用户名称和 Email 地址 

具体操作

(1)安装 Git 后, 首先要设置你的用户名称和 e-mail 地址, 因为每次 Git 提交都会使用该信息

(2)指令(在git命令行执行)

#用户
git config --global user.name "wwj"
#邮箱
git config --global user.email "自己的邮箱地址"

(3)指令成功执行,会生成 C:\Users\Administrator\.gitconfig, 信息如下

4.2 查看配置

(1)查看所有配置:

git config -l

(2)查看系统配置:

git config --system --list

(3)查看当前用户配置:

git config --global --list

说明:该指令显示的就是 C:\Users\Administrator\.gitconfig 内容

4.3 Git 的配置文件 

(1)system 配置文件

Git\etc\gitconfig :Git 安装目录下的 gitconfig

(2)global 全局文件

C:\Users\Administrator\ .gitconfig 只适用于当前登录用户的配置

5 Git 工作原理

5.1 四个工作区域&关系

(1)四个工作区域 

Git 本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库 (Repository 或 Git Directory)。如果再加上远程的 git 仓库(Remote Directory)就可以分为四个 工作区域。文件在这四个区域之间的转换关系如下 

 

  • Workspace:工作区,就是平时存放项目代码的地方
  • Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表的信息
  • Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有 版本的数据。其中 HEAD 指向最新放入仓库的版本
  • Remote:远程仓库,托管代码的服务器(比如 Github/Gitee),可以简单的认为是你项目组 中的一台电脑用于远程数据交换 

(2)对本地的三个区域再说明(如图) 

  • Directory:使用 Git 管理的一个目录,也就是一个仓库,包含我们的工作空间和 Git 的管 理空间。
  • WorkSpace:需要通过 Git 进行版本控制的目录和文件,这些目录和文件组成了工作空间。
  • .git:存放 Git 管理信息的目录,初始化仓库的时候自动创建。
  • Index/Stage:暂存区,或者叫待提交更新区,在提交进入 repo 之前,我们可以把所有的更新放在暂存区。
  • Local Repo:本地仓库,一个存放在本地的版本库;
  • HEAD 只是当前的开发分支(branch)。
  • Stash:隐藏,是一个工作状态保存栈,用于保存/恢复 WorkSpace 中的临时状态。 

5.2 工作流程 

Git 的工作流程说明:

(1)在工作目录中添加、修改文件;

(2)将需要进行版本管理的文件放入暂存区域;

(3)将暂存区域的文件提交到 git 本地仓库。

因此,git 管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed) 

Git 仓库创建 

6.1 创建工作目录与常用指令

(1)工作目录(WorkSpace)一般就是你希望 Git 帮助你管理的文件夹,可以是你项目的目录, 也可以是一个空目录,建议不要有中文。

(2)关键的 6 个命令 - 示意图 

6.2 本地仓库-创建 

创建全新仓库

操作演示

说明: 创建全新的仓库,需要用 GIT 管理的项目的根目录执行

(1)创建目录 d:\wwjgit 作为本地 git 仓库

(2)进入该文件夹后右键 

(3)执行 

git init

克隆远程仓库 

需求:演示在本地克隆远程仓库 D:\wwjgit2

操作演示

说明: 克隆远程代码仓库,就是将远程服务器上的仓库完全镜像一份至本地

# 克隆一个代码仓库和它的整个代码历史(版本信息)
git clone [url] # url 就是远程 git 项目的地址

(1)创建目录 d:\wwjgit2 作为本地 git 仓库

(2)在 github 或者 gitee 找一个项目的 地址 url, 比如 https://gitee.com/6tail/lunar-javascript.git

(3) 进行wwjgit2目录,打开 git 命令行,执行克隆指令

git clone https://gitee.com/6tail/lunar-javascript.git

7 Git 文件管理

7.1 文件四种状态

(1)Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到 git 库, 不参与版本控制. 通过 git add 状态变为 Staged

(2)Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这 种类型的文件有两种处理方式, 如果它被修改, 变为 Modified. 如果使用 git rm 移出版本库, 则成为 Untracked

(3)Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这种文件有两个去处, 通过 git add 可进入暂存 staged 状态, 使用 git checkout 则丢弃修改过, 返回到 unmodify 状态, 这个 git checkout 即从库中取出文件, 覆盖当前修改

(4)Staged: 暂存状态. 执行 git commit 则将修改同步到库中, 这时库中的文件和本地文件又 变为一致, 文件为 Unmodify 状态. 执行 git reset HEAD filename 取消暂存, 文件状态为 Modified

7.2 文件操作指令

(1)查看指定文件状态:

先在 D:\wwjgit2\lunar-javascript , 创建一个测试文件 ABC.txt

git status ABC.txt

(2)查看所有文件状态:

git status

(3)添加所有文件到暂存区:

git add .

(4)提交暂存区中的内容到本地仓库:

git commit -m "消息内容"

7.3 忽略文件 

7.3.1 忽略文件处理方式

不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等, 在主目录
下建立".gitignore"文件(默认就有),此文件有如下规则: 

  • 忽略文件中的空行或以井号(#)开始的行,即 # 表示注释
  • 支持 Linux 通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,
  • 方括号([abc])代表可选字符范围,大括号({string1,string2,...})代表可选的字符串等。
  • 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
  • 如果名称的最前面是一个路径分隔符(/dir),表示忽略 .gitignore 文件所在的目录,不包括其任何子目录中的 dir 目录
  • 如果名称的最后面是一个路径分隔符(dir/),忽略 .gitignore 文件所在的目录和所有子目录的 dir 目录 
  • 更 加 详 细 的 规 则 :
    https://blog.csdn.net/w8y56f/article/details/103263924?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7
    Edefault%7ECTRLIST%7Edefault-1.showsourcetag&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefau
    lt-1.showsourcetag

举例:

*.java #忽略所有 .java 结尾的文件

!wwj.java  #wwj.java 除外

8 Gitee 创建代码仓库

8.1 创建 Gitee 账号

(1)gitee 官网:https://gitee.com/

(2)注册地址:https://gitee.com/signup

(3)也可以使用 微信、QQ、Github 账号登录

8.2 创建仓库

(1)点击创建仓库

(2)输入仓库的信息, 仓库开源, 需要绑定手机号

(3)点击创建

8.3 设置本机绑定 SSH 公钥,实现免密登录

8.3.1 生成 SSH 公钥

(1)进入 C:\Users\Administrator\.ssh , 没有就手动创建该文件夹

(2)如果该目录下有相应文件,先删除(第一次操作是没有的)

(3)在该目录下执行指令 ssh-keygen , 生成文件(说明:直接回车即可), ssh-keygen 指令更多说明: https://blog.csdn.net/weixin_37335761/article/details/120146098 

8.3.2 将公钥信息 public key 添加到码云账户

(1)点击设置

(2)点击 SSH 公钥

(3)复制生成的 id_rsa.pub 内容

(4)拷贝到如下位置

(5)提示输入密码验证,然后就成功了

8.4 将创建的仓库-克隆到本地

(1)先找到仓库,并得到仓库地址 url

(2)创建 D:\gitee_wwj_java 

(3)在该目录下执行克隆指令

(4)克隆成功

9 IDEA 项目使用 Git 管理

9.1 gitee 创建的项目拉取到 IDEA,进行管理

可以通过两种方式进行操作,分别是通过界面操作、命令行操作,下面都进行演示

9.1.1 界面操作

(1)将 Gitee 初始化的 git-test-repository,拉取到 IDEA

结果:

(2) 创建一个crm模块,进行测试

创建成功后,项目结构如下

 

(3)将改动 add 到 暂存区,说明:将HI.java加入到暂存区(文件名称为红色,表示 Untracked 状态,绿色表示被版本工具进行管理了)

将鼠标放在 Main.java 文件上点击鼠标右键,然后依次点击 Git -> Add 即可放入暂存区

(3)将暂存区文件 commit 到本地仓库

说明:commit只是提交到本地仓库,并没有push到远程仓库(即GitHub/Gitee)

 

(4)push 到远程仓库

(5)gitee 中仓库变化如下

至此大功告成,接下来演示使用命令行实现 

9.1.2 命令行操作

(1)创建一个新文件 Ok.java 进行测试 

(2)在项目目录打开git命令行界面

9.2 将本地创建的项目(不是从Gitee拉取的)和Gitee的代码仓库关联

(1)在Gitee创建一个仓库,比如wwj-sns 

(2)创建一个maven项目 wwj-sns 

(3)克隆gitee的wwj-sns到d:/git-wwj-sns

(4)将克隆下拉的wwj-sns的文件,拷贝到IDEA对应项目中

(5)刷新,或者重启IDEA项目

大功告成 

9.3 查看本地操作记录

9.4 获取Gitee的代码仓库最新代码

说明:一个IDEA项目(从Gitee clone),后面又希望获取Gitee的代码仓库最新代码,如何操作?

10 GIT 分支管理

10.1 基本介绍

(1)分支可以有多个(根据业务需求)

(2)如果各分支没有交集,始终平行发展,则不需要合并(merge)

(3)如果两个分支,需要合并,则执行 merge 操作

(4)分支合并示意图

10.2 git 分支指令应用实践

10.2.1 git 分支指令一览

地址: https://gitee.com/all-about-git

#  列出所有本地分支 
$ git branch

#  列出所有远程分支 
$ git branch -r

#  列出所有本地分支和远程分支 
$ git branch -a

#  新建一个分支,但依然停留在当前分支 
$ git branch [branch-name]

#  新建一个分支,并切换到该分支 
$ git checkout -b [branch]

#  新建一个分支,指向指定 commit 
$ git branch [branch] [commit]

#  新建一个分支,与指定的远程分支建立追踪关系 
$ git branch --track [branch] [remote-branch]

#  切换到指定分支,并更新工作区 
$ git checkout [branch-name]

#  切换到上一个分支 
$ git checkout -

#  建立追踪关系,在现有分支与指定的远程分支之间 
$ git branch --set-upstream [branch] [remote-branch]

#  合并指定分支到当前分支 
$ git merge [branch]

#  选择一个 commit ,合并进当前分支 
$ git cherry-pick [commit]

#  删除分支
$ git branch -d [branch-name]

#  删除远程分支
$ git push origin --delete [branch-name] $ git branch -dr [remote/branch]

下面在 wwj-sns 项目上进行演示

10.2.2 创建分支 v1.0,   并提交到远程仓库

在  wwj-sns 项目目录打开 git 命令行进行操作

10.3 使用IDEA进行分支操作 

10.3.1 创建分支

 

 

把分支同步到 Gitee 远程仓库 

 

 

 

10.3.2 切换分支

 

在 v2.0 分支下 ,  我们修改/增加一下文件,  就是针对当前 v2.0 的,其他分支不会有影响

10.3.3 分支合并(冲突的情况)

在进行分支合并时,  如果没有冲突(比如没有修改同一个文件),  这时会比较顺畅.这里用案例来演示一下怎么进行分支合并

需求说明:  将分支 v3.0  合并到  Master 主分支

(1)切换到 v2.0,  并增加一个文件 Hi.java,  并 Add->Commit->Push  到远程仓库

(2)切换到 Master 主分支 ,注意看在本地仓库和远程仓库,  都没有 Hi.java

(3)将 v2.0  合并到 Master 分支

 

(4)注意看 Master 主分支 ,这时在本地仓库,  有 Hi.java ,  但是远程仓库还没有

  

(5)将本地的 Master  分支, Push 到远程仓库,  这时观察远程仓库 Master 下也有 HI.java 

10.3.4 分支合并(有冲突的情况)

出现冲突

 

10.3.5 删除分支

(1)彻底删除某个分支

(2)只删除本地分支,  还可以重新获取

10.4  注意事项和细节说明

  • Master 主分支应该非常稳定,用来发布新版本,一般情况下不要在上面工作,工作一般 在新建的分支(比如 dev 、v1.0 、v2.0)上工作
  • 分支代码稳定后,可以合并到主分支 Master
  • 在进行分支合并时,  最好是各分支都已经处于 Committed  的状态,  这样可以减小处理合 并冲突的难度
  • Push 操作,  是 Push  你已经 Committed  的代码,  如果你修改了一个文件,  但是你没有执行 Commit ,那么你 Push 的其实是上次 Committed 的状态
  • add   、 commit   、push   的操作可以针对单个文件,  也可以针对文件夹
  • 文件要 Commit  前需要先 Add   到  暂存区 ,   以后文件修改了,  就可以直接 Commit
  • 如果要删除文件,  可以在本地删除该文件,  然后 commit   文件所在文件夹即可,  并重新 push 该分支,  那么在远程仓库,  也会删除对应分支的文件

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

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

相关文章

一键翻译全球:2024年跨文化交流的得力助手

翻译工具作为沟通不不同语言桥梁上的重要使者,正在从古老的字典查阅到现代的机器翻译软件发展。今天,让我们一同探索与搜狗翻译工具相似的翻译工具们怎么带我们走进奇妙世界。 1.福晰翻译 链接直达>>https://www.foxitsoftware.cn/fanyi/ 这款多…

数字芯片中I/O单元及电源domain布局中SIPI的考虑

芯片设计的物理实施过程通常也简称为布局布线(P&R,Place-and-Route),布局一般被分为布局规划(Floorplan)和标准单元摆放(Place)两个过程。而其中的布局规划是芯片后端物理实现过…

用Starbound星际边界服务器开服联机

1、登录服务器(百度莱卡云游戏面板) 进入控制面板后会出现正在安装的界面,安装大约10分钟(如长时间处于安装中请联系我们的客服人员) 2、连接游戏 开机后等待服务器地址下方正常运行时间的表由黄色变成灰色并且在计时…

Centos7.x安装grafana11

第一步:yum安装 sudo yum install -y https://dl.grafana.com/enterprise/release/grafana-enterprise-11.2.0-1.x86_64.rpm 第二步:改成中文 vim /etc/grafana/grafana.ini 第三步:启动 systemctl start grafana-server 第四步&#x…

linux文件——文件系统——学习、理解、应用软硬件链接

前言:本篇内容主要讲解文件系统的软硬件链接。 经过前两篇文件系统的文章——讲解硬件(磁盘)、讲解文件系统底层, inode, 我们本节内容可以很好的理解我们要讲解的内容。 并且本节内容较少, 友友们学习本节的时候将会比…

Linux(CentOS 7)

Linux(CentOS 7) super space : 切换输入法 ctrl alt : 级别三(大黑屏)呼出鼠标 Fn Ctrl Alt F1 : 进入图形化界面 Fn Ctrl Alt F2 : 进入控制台界面 第 1 章 Linux 入门 1.1 概述 Linux是一个操作系统(OS) 1.2 Linux 和 Windows 区别 第 2 章 VM 与 Linux 的安装…

Apache Paimon:开启实时湖仓存储新时代

Apache Paimon:开启实时湖仓存储新时代 前言Apache Paimon 前言 在当今数字化浪潮汹涌澎湃的时代,数据已成为企业最为宝贵的资产之一。如何高效地处理、存储和利用这些海量数据,成为了企业在激烈竞争中脱颖而出的关键。而在数据处理的广阔领…

rsyslog交叉编译(armv7、armv8、aarch64、arm32平台通用)

文章目录 1、依赖库列表2、编译建议3、编译3.1、编译libestr3.2、编译libfastjson3.3、编译zlib3.4、编译libuuid3.5、编译libgpg-error3.6、编译libgcrypt3.7、编译openssl3.8、编译curl3.9、编译rsyslog该文档描述了如何交叉编译rsyslog到arm64嵌入式平台。 1、依赖库列表 li…

openjudge- 4.6算法之贪心_8469:特殊密码锁

题目 8469:特殊密码锁 总时间限制: 1000ms 内存限制: 1024kB 描述 有一种特殊的二进制密码锁&#xff0c;由n个相连的按钮组成&#xff08;n<30&#xff09;&#xff0c;按钮有凹/凸两种状态&#xff0c;用手按按钮会改变其状态。 然而让人头疼的是&#xff0c;当你按一个…

c++140namespace和ioterm

c语言只有一个全局定义域 那么可能会调错函数&#xff0c;调 错定义域 #include"iostream" using namespace std;//iostream 没有引入标准的std,需要手工写 //如果不写using namespace 需要引入std void main() {std::cout << "using test" <<…

【web开发】Spring Boot 快速搭建Web项目(二)

Date: 2024.08.31 18:01:20 author: lijianzhan 简述&#xff1a;根据上篇原文Spring Boot 快速搭建Web项目&#xff0c;由于搭建好项目后仍然无法使用, 我们还需要先配置一下项目。 操作如下&#xff1a; 找到src/main/resources文件夹&#xff0c;在该文件夹下点击右键创建…

【我的Android进阶之旅】使用TabLayout自定义一个TitleTabView

文章目录 零、效果图一、自定义一个TitleTabView1.1 自定义属性(attrs.xml 中)1.2 自定义TitleTabView1.3 TabItem的子布局1.4 颜色值二、在 XML 中使用 `TitleTabView`2.1 布局文件(XML)2.1.1属性说明三、在 Kotlin 中使用 `TitleTabView`:零、效果图 其中Tab 2是选中的效果…

【电子数据取证】Linux软件包管理器yum和编辑器vim

文章关键词&#xff1a;电子数据取证、手机取证、安卓取证、云取证 在Linux系统中&#xff0c;我们会进行一些软件的安装以及对一些服务或软件的配置&#xff0c;这时就需要用到Linux的yum以及编辑器&#xff0c;下面我们就来看一下这两个功能。 Linux软件包管理器yum 一、什…

数学建模强化宝典(3)fminsearch

一、介绍 fminsearch 是 MATLAB 中用于寻找单变量或多变量函数局部最小值的函数&#xff0c;它不需要函数的导数信息&#xff0c;属于无导数优化方法的一种。该函数通过单纯形搜索&#xff08;simplex search&#xff09;算法来工作&#xff0c;单纯形是n维空间中的一个n1顶点的…

ET算法【动态规划】

线性dp&#xff1a;dp[i][j] 由 dp[i - 1][j] 通过加减乘除等线性运算得到 状压dp&#xff1a;dp[i][j] 表示一个用二进制数表示的子集来反映当前状态&#xff0c;如7 &#xff08;111&#xff09;&#xff08;选了三个&#xff09; 期望dp&#xff1a;dp[i][j] 表示期望或者…

Redis从入门再到入门(中)

文章目录 1.Redis的数据类型1.1 Redis的5中数据类型1.2 字符串类型String1.3 哈希类型hash1.4 列表类型list1.5 集合类型set1.6 有序集合类型sortset 2.Redis的通用命令 1.Redis的数据类型 1.1 Redis的5中数据类型 redis是一种高级的key-value的存储系统&#xff0c;其中valu…

【Godot4.3】MarkDown编辑和控件事实渲染

概述 这是本人2024年5月份左右编写的一个简易的MarkDown编辑和渲染测试项目&#xff0c;基于自己编写的MarkDown解析和生成类MDdoc编写。之前是作为一个试验性的内容混乱的放置在另一个测试项目中&#xff0c;现在独立为一个单独项目。因为测验成功后就一直没改动&#xff0c;…

IEEE P3233 标准启动会回顾:迈向去中心化存储标准化的第一步

2024 年 8 月 30 日&#xff0c;由 CESS 发起的 IEEE P3233《Standard for Blockchain-Based Decentralized Storage Protocol Specification》标准启动会顺利举行。 此次会议标志着 IEEE P3233 标准制定的正式启动&#xff0c;也代表了去中心化存储技术标准化进程的正式开始。…

数据源10min自动断开连接导致查询抛异常(未获取可用连接)

由于个人能力有限&#xff0c;本文章仅仅代表本人想法&#xff0c;若有不对请即时指出&#xff0c;若有侵权&#xff0c;请联系本人。 1 背景 工作中引入druid来管理数据源连接&#xff0c;由于数据源每隔10分钟强制管理空闲超过10分钟的连接&#xff0c;导致每隔10分钟出现1…

如何构造哈夫曼树

目录 一、哈夫曼树的概念 1、结点的权&#xff1a; 2、结点的带权路径长度 3、树的带权路径长度 4、哈夫曼树 二、哈夫曼树的构造 1、构造步骤 三、哈夫曼树的编码 一、哈夫曼树的概念 1、结点的权&#xff1a; 定义&#xff1a; 每个结点的权重&#xff08;重要性…