写在前面
该笔记是根据B站狂神Git视频+狂神说Git博客总结出来用以复习。
视频地址:https://www.bilibili.com/video/BV1FE411P7B3
博客地址:https://blog.csdn.net/qq_33369905/article/details/106647320
强烈安利狂神!
版本控制
啥是版本控制?
所谓版本控制就是对版本一、版本二、版本三…最终版本等等进行管理,是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。
版本控制分类
1、本地版本控制
记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人用,如RCS。
2.集中版本控制 SVN
所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改,
所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。而且,所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。
3.分布式版本控制 Git
每个人都拥有全部的代码安全隐患!
由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。可以在本机查看版本信息,没网可以提交,但是push还是需要联网。
不会因为服务器损坏或者网络问题,造成不能工作的情况!
Git与SVN的主要区别
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后工作,完成工作后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,对网络带宽要求较高。
Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,**工作的时候不需要联网了,因为版本都在自己电脑上。**协同的方法是这样的:比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。Git可以直接看到更新了哪些代码和文件
★Git下载与配置
去npmmirror 中国镜像站下载 很快
https://npmmirror.com/ 找到Git相关
下载windows64位.exe即可
之后安装即可
下载后有这三个
Git Bash:Unix与Linux风格的命令行,使用最多,推荐最多,直接用这个
Git CMD:Windows风格的命令行
Git GUI:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令
配置
主要改一个地方 :设置user email
在任一地方右键:会出现Git Bash here 和 Git GUI here 选择Git Bash here即可!
查看 git config -l
查看不同级别的配置文件:
git config --system --list #查看系统级别配置文件
git config --global --list #查看当前配置文件
★配置用户名和邮箱
使用命令:
git config name "cangjian" #设置自己的用户名
git config email 471228501@qq.com #设置自己的邮箱 最好填自己真实的 后面可能会用到
设置之后在C:\Users\Administrator 会看到一个.gitconfig文件
打开 看到刚才设置的信息 说明设置成功!
然后再查看一下:
环境配置成功!
★Git命令
和Linux的命令很多都可以重复使用!
比如说 cd ls pwd touch rm mkdir rmdir clear等
★三个重要命令!
git add . #添加所有文件到暂存区
git commit -m "消息内容" #提交暂存区中的内容到本地仓库 -m 提交信息
git push #同步到远程仓库
为啥子有这三个命令嘞?
这就得说起Git的基本理论了!
★基本理论!
Git 有四个区域:
- Workspace:工作区,就是你平时存放项目代码的地方
- Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
- Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
- Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
现在就要用到上面的三个指令了!
Git工作流程
1、在工作目录中添加、修改文件;
2、将需要进行版本管理的文件放入暂存区域;
3、将暂存区域的文件提交到git仓库。
因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)
即上图加上状态。
仓库搭建
1.本地搭建 在当前文件夹创建
git init
执行后当前文件夹会多一个.git 文件 如果隐藏则没有显示
要在显示那里把显示隐藏选项勾上!
2.在远程服务器上clone!
执行命令:
# 克隆一个项目和它的整个代码历史(版本信息)
$ git clone [url] # https://gitee.com/kuangstudy/openclass.git
这个url是从哪里来嘞?
去Gitee找,要哪个拿哪个!
复制等待执行完毕即可!
当前目录出现:
搭建成功!
文件四种状态
版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上。
Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改 !
Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified
查看文件状态
上面说文件有4种状态,通过如下命令可以查看到文件的状态:
#查看指定文件状态
git status [filename]
#查看所有文件状态
git status
# git add . 添加所有文件到暂存区
# git commit -m "消息内容" 提交暂存区中的内容到本地仓库 -m 提交信息
忽略文件
一般在idea中使用,小伙伴们创建一个新springboot项目,是不是会先删除一些不要的文件,其中有一个是**.gitignore**,这个就是我们的Git忽略文件!
忽略文件有啥子作用嘞?
顾名思义,在进行上传的时候忽略一些不必要的文件,如生成的.class文件,target文件,.idea文件等,都可以通过忽略文件来忽略它们的上传!
忽略文件规则
在主目录下建立".gitignore"文件,忽略文件规则:
-
忽略文件中的空行或以井号(#)开始的行将会被忽略。
-
可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,…})代表可选的字符串等。
-
如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
-
如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
-
如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)
#为注释
*.txt #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!
!lib.txt #但lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/ #忽略build/目录下的所有文件
doc/*.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
这些东西都比较固定,可以自行在网上查找适合自己的!
使用Gitee
在找工作,套用模板的时候,上Gitee找资源是非常有必要的,所以学习一波。
- 注册登录码云
2、设置本机绑定SSH公钥,实现免密码登录!(免密码登录,这一步挺重要的,码云是远程仓库,我们是平时工作在本地仓库!)
# 进入 C:\Users\Administrator\.ssh 目录
# 生成公钥
ssh-keygen
在任意文件夹执行该命令,一路回车就会自动在C:\Users\Administrator生成.ssh文件!
打开这个文件夹,复制里面的id_rsa.pub内容!
在Gitee中添加公钥:
OK!
★IDEA集成Git
1.首先创建一个普通的springboot项目
2.将git工程中的文件夹直接拷贝到java文件夹中 (git工程即之前从Gitee中下载的项目)
加进去之后发现变色了!红色代表是选中状态,绿色代表提交状态!
3.之后就直接在这里使用命令操作! 执行git add . 后上面的红色就会变成绿色
4.然后提交
添加描述 commit即可
5.这个时候还没push , 所以Gitee仓库中刷新不到 ,我们需要push一下
看一下远程仓库:
提交成功~
如果修改了代码 重新来一遍操作就行
git add .
git commit -m “filename.java”
git push
OK!
Git分支
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 新建一个分支,但依然停留在当前分支
git branch [branch-name]
# 新建一个分支,并切换到该分支
git checkout -b [branch]
# 合并指定分支到当前分支
$ git merge [branch]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
如果同一个文件在合并分支时都被修改了则会引起冲突:解决的办法是我们可以修改冲突文件后重新提交!选择要保留他的代码还是你的代码!
master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的dev分支上工作,工作完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。
Git搞定!狂神牛逼!