32.Git分布式版本控制

目录

一、Git分布式版本控制。

(1)Git简介。

(2)Git工作流程图。

(3)Git安装。

(4)Git基本配置。

(4.1)用户信息配置(不一定是真实的信息) 。

(4.2)指令别名配置。

(4.3)解决GitBash乱码问题(我没使用过)。

(5)初始化(创建)本地仓库。 

(6)工作区、暂存区、仓库。

(7)Git常用指令。

(7.1)查看修改状态(status)。

(7.2)添加工作区到暂存区(add)。

(7.3)提交暂存区到本地仓库(commit)。

(7.4)查看提交日志(log)。

(7.5)版本回退、查看已删除提交记录。

(7.6)添加文件至忽略列表(不需被git管理的文件)。

(7.7)练习:基础操作。

(8)分支。

(8.1)分支的概念。

(8.2)查看本地分支。

(8.3)创建本地分支(需注意)。

(8.4)切换分支。

(8.5)合并分支(合并的是——提交)。

(8.6 )删除分支。

(8.7)合并冲突。

(8.8)开发中分支使用原则与流程。

(8.9)分支练习。

二、Git远程仓库(gitee码云)。

(1)注册码云账户、新建远程仓库。

(2)配置SSH公钥。 

(3)操作远程仓库——指令。

(3.1)添加远程仓库。

(3.2)查看远程仓库。

(3.3)推送到远程仓库。

(3.4)查看本地分支与远程分支的关联关系。

(3.5)把远程仓库克隆到本地。 

(3.6)从远程仓库中抓取与拉取。

(3.7)解决合并冲突(远程)。

(3.8)练习远程仓库指令。

(3.9)远程git项目出现文件夹后面跟@+数字。

(3.10)上传大文件到gitee。

(3.11)使用lfs依旧失败的原因。

三、在Idea中使用Git。

(1)在IDEA中配置Git。

(2)创建项目远程仓库。

(3)初始化本地仓库。

(4)提交、推送、克隆、更新拉取、git-log等操作。

(5)分支:创建、切换、合并等操作。

(6)解决推送冲突(推送时合并冲突)。

(7)IDEA常用Git操作入口。 

(8)场景分析。 

(9)IDEA继承GitBash作为终端。 


一、Git分布式版本控制。

(1)Git简介。

(2)Git工作流程图。

(3)Git安装。

(4)Git基本配置。

(4.1)用户信息配置(不一定是真实的信息) 。

(4.2)指令别名配置。

(4.3)解决GitBash乱码问题(我没使用过)。

${git_home}:指的是git所在目录。

(5)初始化(创建)本地仓库。 

(6)工作区、暂存区、仓库。

工作区:修改后、或新创建的文件,还未执行git add指令。

暂存区:工作区执行git add指令后,还未执行git commit指令。

仓库(本地仓库):暂存区的文件执行git commit指令后。

注意:工作区与暂存区的文件:属于所有分支(只有提交的,才是私有) 

(7)Git常用指令。

(7.1)查看修改状态(status)。

git status: 暂存区与工作区有变动的信息(如新建、修改)。

(7.2)添加工作区到暂存区(add)。

(7.3)提交暂存区到本地仓库(commit)。

不需要注释:则  git commit  就行 

(7.4)查看提交日志(log)。

注意:参数位置不固定,即参数之间没有前后顺序。

 (7.5)版本回退、查看已删除提交记录。

(7.6)添加文件至忽略列表(不需被git管理的文件)。

(7.7)练习:基础操作。

(8)分支。

(8.1)分支的概念。

理解:

1、 HEAD指向当前使用的分支,括号()中的就是分支的名字。

2、(分支名)出现的位置代表的是该分支最近一次的提交信息,然后往下看以往的提交。

3、线条就是指向该分支的提交信息。

(8.2)查看本地分支。

git branch

(8.3)创建本地分支(需注意)。

笔记:创建分支在哪个分支下创建,就包含该分支的提交(相当于把该分支仓库复制一份给创建分支),之后的就是互不干扰了(使用哪个分支创建分支提交等,都不会影响其他分支)。(创建分支(复制)包含了 那个分支的(提交)仓库)

注意:工作区与暂存区的文件:属于所有分支(只有提交的,才是私有) 。 

所以理论上相当于包含了该分支的(提交)仓库、暂存区、工作区。 

git branch 分支名  —— 例如:git branch dev01

(8.4)切换分支。

 注意:对已提交文件进行修改后,必须要重新提交才能切换其他分支,否则切换失败。

第一种:切换分支: 

z第一种:git checkout 分支名 —— 例如:git checkout dev01

第二种:切换到一个不存在的分支(创建并切换) :

 第二种:git checkout -b 分支名  —— 例如:git checkout -b dev01

(8.5)合并分支(合并的是——提交)。

注意:使用的是哪个分支,就把被合并分支 合并到 哪个分支。

注意:工作区与暂存区的文件:属于所有分支(只有提交的,才是私有) 

 git merge 要合并的分支名称 —— git merge dev01

(8.6 )删除分支。

注意:不能删除当前分支,只能删除其他分支。

第一种(已经被合并了的分支可删):删除分支时,需要做各种检查。

git branch -d  分支名 —— 例如:git branch -d dev01

第二种(还未被合并的分支,需强制删除):不做任何检测,强制删除。

 git branch -D  分支名 —— 例如:git branch -D dev01

(8.7)合并冲突。

出现冲突:如果两个分支都对同一个文件同一行进行了修改,那么就会出现合并冲突(不知道要哪一个分支的修改);如果只有一个分支进行了修改(另外一个分支没有修改),则合并的时候就要修改过的那个数据。

(8.8)开发中分支使用原则与流程。

(8.9)分支练习。

二、Git远程仓库(gitee码云)。

(1)注册码云账户、新建远程仓库。

(2)配置SSH公钥。 

1.生成公钥。

2.查看公钥。

3. 验证是否配置成功。

如果使用 HTTPS 协议来访问 Git 远程仓库,则相较于 SSH 协议有以下区别:

访问方式不同:SSH 协议通过密钥认证登录 Git 服务器,而 HTTPS 协议则需要在每次访问时输入用户名和密码进行身份认证才能登录。

安全性不同:SSH 协议的加密强度更高。

速度不同:由于 HTTPS 协议需要在每次访问时进行身份认证,所以通常比 SSH 协议的连接速度慢,尤其是在大量的代码下载或上传时,速度差距更加明显。

综上所述,使用 SSH 协议访问 Git 仓库通常比使用 HTTPS 协议更加安全和快捷,尤其是在需要频繁进行代码操作的情况下。但是,如果您无法使用 SSH 协议,则可以选择使用 HTTPS 协议来访问 Git 仓库,但需要注意身份认证和数据安全等问题。

(3)操作远程仓库——指令。

(3.1)添加远程仓库。

git remote add  别名  远程仓库地址(使用SSH协议)

例如:git remote add origin git@gitee.com:czbk_zhang_meng/git_test.git

git@gitee.com:czbk_zhang_meng/git_test.git 是Git远程代码仓库的地址;

origin是远程仓库地址的一个别名。

(3.2)查看远程仓库。

git remote

(3.3)推送到远程仓库。

完整指令:git push [-f] [--set-upstream] [别名 [本地分支名][:远端分支名] ]

常用:

git push origin master

git push origin master:master

git push --set-upstream origin master:master

git push(必须有上面那个关联,才能用这个)

参数讲解:

-f 表示强制覆盖

-set-upstream推送到远端的同时并且建立起和远端分支的关联关系。(作用:则可以省略远程仓库别名、分支名、远程仓库分支名)

第一次的时候:git push --set-upstream origin master(进行关联)

第二次的时候:git push(将某分支推送到已关联的远端分支。)

(3.4)查看本地分支与远程分支的关联关系。

关联关系理解:本地分支与远程仓库分支有一条映射(对应)关系。

如:关联(a -》b):a的指向就是b。

 git branch -vv

(3.5)把远程仓库克隆到本地。 

注意:克隆的仓库目录默认在命令行的当前目录下(不写目录名称,则默认远程仓库名称)。 

git clone 远程仓库地址 [本地目录]

例如:git clone git@gitee.com:czbk_zhang_meng/git_test.git  test_git(目录名称可省)

(3.6)从远程仓库中抓取与拉取。

1.抓取:git  fetch  远程仓库别名  远程仓库分支名

1. git fetch会获取远程仓库上的所有分支的最新代码,并在本地更新远程跟踪分支(例如,origin/master 分支)。

2.git merge origin/master:将origin/master远程分支合并到当前分支。(origin/master是远程仓库分支名) 

2.拉取:git  pull  远程仓库别名  远程仓库分支名

git pull 会获取远程仓库上当前分支的最新代码,(例如,origin/master 分支),并将远程跟踪分支与本地当前分支进行合并。 

(3.7)解决合并冲突(远程)。

如果有A、B两个用户:

1、B在a.txt文件的第一行上写了“你好”,然后推到git远程仓库。

2、然后A也对a.txt文件第一行写了“我很好”,然后A如果想要推到git远程仓库,那么就会产出冲突(不知道保留“你好”还是保留“我很好”),则A用户需要先拉取到本地合并,解决冲突后(删除不要的内容),将修改的文件重新提交到仓库,然后才能推到git远程仓库。

(3.8)练习远程仓库指令。

(3.9)远程git项目出现文件夹后面跟@+数字。

解决:删除该文件夹,然后进入该本地目录,删除里面的.git文件,然后重新添加、提交、推送就好了。

(3.10)上传大文件到gitee。

1.在git-lfs官网上下载lfs安装包,双击安装程序按提示安装即可。

https://git-lfs.com/

2.开启lfs功能。

git lfs install    #开启lfs功能

3.在 Git 仓库中启用 LFS 跟踪,对哪些文件进行跟踪(管理)。

git lfs track "*.zip"

4.添加、提交、推送。(这几个跟原来的是一模一样,不需要变)。

git add 文件

git commit -m "提示信息"

git push origin master

5.使用以下命令下载已推送的大型二进制文件(我还未使用过)。

git lfs pull

6.禁止使用lfs。

git lfs uninstall 

异常处理:

第一个异常:WARNING: Authentication error: Authentication required: LFS only supported repository in paid enterprise.
batch response: LFS only supported repository in paid enterprise.

git config lfs.https://gitee.com/tan-dream-yiyi-xi/1.learn-code-and-software.git/info/lfs.locksverify false

注意:

https://gitee.com/tan-dream-yiyi-xi/1.learn-code-and-software.git是远程仓库https地址。

使用SSH地址: 

git config lfs.ssh://<ssh-url-for-your-repo>/info/lfs.locksverify false

在上述命令中,将 <ssh-url-for-your-repo> 替换为您从Gitee上复制的 SSH URL

第二个异常:error: failed to push some refs to 'gitee.com:tan-dream-yiyi-xi/1.learn-code-and-software.git'

解决方法:删除.git/hooks/pre-push文件

(3.11)使用lfs依旧失败的原因。

git commit --hard  版本号:不仅仅会重置索引区和工作目录,还会清除所有历史记录,也就是说,以前的提交都将永久消失。

git reset --hard 版本号:只会将HEAD指向新的提交,旧的提交历史仍然存在。

失败提示:使用lfs出现 文件171.25 MB, exceeds 100.00 MB.

失败原因:文件没有被跟踪,所以上传只会是失败。(刚开始没有被跟踪)。

解决方法:是因为文件一开始没有被跟踪,需要reset重置版本,重新提交推送。

举例:返回到提交大文件版本之前。

git reset --hard 80a2b45

git add .

git commit -m "重新提交"

git push origin master 

三、在Idea中使用Git。

(1)在IDEA中配置Git。

(2)创建项目远程仓库。

(3)初始化本地仓库。

(4)提交、推送、克隆、更新拉取、git-log等操作。

(5)分支:创建、切换、合并等操作。

(6)解决推送冲突(推送时合并冲突)。

 解决方法:修改有冲突的文件。

(7)IDEA常用Git操作入口。 

(8)场景分析。 

(9)IDEA继承GitBash作为终端。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值