1.git是干什么的?
同学们是不是在小组协作完成项目的过程中,常常因为文件版本混乱而苦恼,由于多人修改而导致某些修改内容的丢失?找不到最新版本?
看到下面的图片,同学们有没有似曾相识的感觉,为了保留更改记录,我们会保存许多个版本的副本,通过这种方式把修改的历史版本保存下来。这样万一某个版本有问题,我们还可以找到之前的版本。
![](https://img-blog.csdnimg.cn/img_convert/443e250d5e158ebce6910f7355f619c7.png)
通过copy方式备份文件比较容易操作,但是这种方式有一些明显缺陷:
1.很难知道各个版本之间的修改内容。必须打开文档进行比对查看。
2.如果遇到多人同时编辑修改文档,则往往容易出现文件混乱,部分信息丢失的问题,尤其是大家的期末设计,多个同学完成代码,就常常遇到这样的困惑。
通过版本管理工具可以帮助我记录文件的演变历史,可以回溯到历史版本。
2. SVN vs GIT
之前我们学习了配置管理工具svn,知道svn是一个集中式版本管理工具。
下面我们来看看 git 与svn的不同,git是一个分布式版本管理工具
SVN中,仓库部署在服务器上,存在单点故障,即若服务器崩溃,则开发都无法提交或者检出代码。
Git中,远程服务器和开发的计算机上都有版本库,不存在单点故障。
![](https://img-blog.csdnimg.cn/img_convert/b3b99fb6e5658e8c9b8ecac5fec486ee.png)
下面我们就用最流行的分布式版本管理工具git来管理我们的更改记录,并让多人协同工作吧,这个技能作为IT人是不可或缺的技能奥!!!
git是一个开源的分布式版本管理工具。相比集中式版本管理工具SVN,还可以免除单点故障的问题、
本文的内容是在windows操作系统上完成,其他操作系统请参考git官网或者其他文档
为了感受远程仓库的学习,建议同学们在码云gitee上注册一个账号
3 git的下载与安装
1)下载git安装包
下载路径:Git
我的操作系统是window,64位的,我下载的Git-2.33.0-64-bit.exe,从官网下载或者从网址下载链接:
链接地址:百度网盘 请输入提取码
提取码:1234
2)安装git
windows上,直接运行安装包,傻瓜式安装即可。
安装完成后,在桌面上点击右键菜单,可以看到 git菜单
![](https://img-blog.csdnimg.cn/img_convert/e42a6ef77396097c3bc0a7f5e44df711.png)
打开git bash,输入 git --version ,如果如下图所示,返回了版本信息,就说明git安装成功了。
![](https://img-blog.csdnimg.cn/img_convert/6e805a19eaaf15dd1983b2bba80573e0.png)
3)安装net framework4.7.2
机房的计算机push代码时,系统提示需要安装此组件。傻瓜时安装下即可。教室机房千万不要重启,不然计算机会恢复的。
这个组件如果不安装,后面与远程仓库交互总是会弹出账户输入窗口,安装之后只需要输入一次张宏。
百度网盘链接地址:百度网盘 请输入提取码
提取码:1234
4)账号需要反复输入的解决办法
关于账号一次登录。在不用输入账号的方法
解决git操作一直要求输入用户名和密码_git每次都要输入用户名密码-CSDN博客
在git bash中执行下该句。告诉git记住git账号。
git config --global credential.helper store
然后再git push 或者 git pull时,输入账号,系统记住账号
![](https://img-blog.csdnimg.cn/img_convert/a3a06762b60f598e87e4b33ccf5127c3.png)
4 git的使用
可以参考git官网的帮助来学习git
下图来自git pull 和 git fetch的区别? - 知乎
Git - Book Git - Book
![](https://img-blog.csdnimg.cn/img_convert/484578009386ec3cc665aaa231287b56.png)
![](https://img-blog.csdnimg.cn/img_convert/4caaee1a04660a8fe59a063458cb669c.png)
1)gitee上注册账号
![](https://img-blog.csdnimg.cn/img_convert/2062404dc562df4bf792b334694786dc.png)
![](https://img-blog.csdnimg.cn/img_convert/4899e4b6515405ef2b0c55e956395ff0.png)
2)建议gitee账号绑定一下你的邮箱
![](https://img-blog.csdnimg.cn/img_convert/f2c360c4dbbc723afdd1166aa2bfeddc.png)
3)在gitee上创建仓库
在gitee的右上角的“+”,可以添加一个仓库 (每个项目创建一个仓库,仓库可以保留项目的历史文件)
![](https://img-blog.csdnimg.cn/img_convert/5e626232d3652a729fc1bbf0ba529dd4.png)
![](https://img-blog.csdnimg.cn/img_convert/66dc40900f293c1dd894a80370ecc1d0.png)
期中分支模型有很多种,大家可参考 简单的代码提交,还能玩出这么多花样?_分支 了解各种分支模型的区别。参考该文中的叙述,结合我自己的理解,各种分支大致含义如下:
master 用于存放对用户发布的版本、类似与svn的tag
develop 用于存放开发的过程版本。它从master分出,然后完成开发后合并到master
release 用于存放交付测试的版本。它来自develop,当develop开发到一定程度需要测试时,把测试版本放到release分支上。当release版本测试中有bug时,修复bug,产生新版本,需要时再次交付给测试,最终release通过测试后,合并到master分支。当然也会合并到develop,将期间修复的缺陷的代码合并到develop。
feature 用于开发某个功能而拉出的分支,它来自develop,开发完成后合并到develop
hotfix 用于修改某个用户版本的缺陷而拉出的分支。它来在master分支,合并回master分支。当然为了避免后期版本没有此问题,该hotfix也会合并到develop。
![](https://img-blog.csdnimg.cn/img_convert/839e976db6fda4de56f9db7a66ee95d6.jpeg)
新建仓库界面上,可以复制仓库的地址。也可以看到git的账户设置命令。这些后面都会用到
![](https://img-blog.csdnimg.cn/img_convert/4e6b32a2edec1ba38cc8055caf834d63.png)
点击上面的【初始化readme文件】 ,界面如下。现在你通过浏览器其实就可以维护你的仓库了奥!
也就是你可以通过浏览器维护你的仓库,新建、修改、删除文件或者文件夹,
![](https://img-blog.csdnimg.cn/img_convert/aec0adc6a7ae8e5dabf3393fbe03d0d6.png)
以后,你登录gitee,在“我的”中就可以找到仓库,打开仓库了。
![](https://img-blog.csdnimg.cn/img_convert/9eef6591a4433586f7fe8fa25029a880.png)
4) 查看git命令的帮助
有时使用某个命令时,我们会忘记了该命令的格式,那么这时候就可以借助与git 的在线帮助功能
a) 命令后面加一个 -h参数
例如,如果想查看git log 命令的参数情况,就在其后追加 一个 -h参数
![](https://img-blog.csdnimg.cn/img_convert/cd3bbc7f21719ca86036f10c794d7d5d.png)
a) 命令后面加一个 --help参数
![](https://img-blog.csdnimg.cn/img_convert/cfde2ee52865723369add6a02ac30538.png)
5) 本地配置用户信息
初次使用git前,需要配置用户信息
在任意目录下点击右键菜单git bash here
![](https://img-blog.csdnimg.cn/img_convert/b484db7febc8939ba143186c2a8d365e.png)
设置用户信息,这样后期操作文档时就能记录是谁操作的。这里的信息你在giee上之前看到过把
git config --global user.name "username"
git config --global user.email "yourmail@163.com"
设置完之后,可以使用 git config ---list查看配置信息
![](https://img-blog.csdnimg.cn/img_convert/f18133332a7e33b91e5388ac0630ee31.png)
6)将远程仓库内容克隆到本地
本地创建文件夹demo,在文件夹中点击右键菜单 【Git Bash Here】
![](https://img-blog.csdnimg.cn/img_convert/73f75a483e54da7b034df179c37dfe86.png)
输入命令: git clone https://gitee.com/caohx666/cmo_week03
![](https://img-blog.csdnimg.cn/img_convert/13834e349779b2d859164d35d8c7c84c.png)
机房如果安装了 net framework的同学,在这里输入 gitee账号,如果没有安装的同学,后面每次与远程服务器交互都需要输入用户名和密码。安装之后后面就不需要反复输入账号了
![](https://img-blog.csdnimg.cn/img_convert/e0c4204ebbb932b5f876052a648fa5e9.png)
如果没有适当设置,每次从远程仓库交互都需要输入账号的用户名、密码,如下图所示。
![](https://img-blog.csdnimg.cn/img_convert/e33fad97ada6bfc2b1f5bebb4a3279db.png)
输入gitee账户的密码
![](https://img-blog.csdnimg.cn/img_convert/2dcbb118ea13856de56b70f85b0c63ed.png)
如果账号正确,则可以成功将远程仓库的信息下载到本地。
![](https://img-blog.csdnimg.cn/img_convert/8194b202e2759b30a9d286d38993de2b.png)
![](https://img-blog.csdnimg.cn/img_convert/4e6fef27ef35f3b942efcb365d19bf65.png)
注意:有的计算机上执行时,会提示安装net framework,请下载安装。
![](https://img-blog.csdnimg.cn/img_convert/9e06b9156368ed43cc13cc2a890c397b.png)
7)添加文件后提交到本地仓库
在git中添加文件,需要先用git add命令将文件加到暂存区,然后再将修改git commit提交到本地仓库
git add 文件名 将指定文件添加到暂存区
git add . 将所有文件添加到暂存区
git commit -m "message" 提交暂存区的内容到本地仓库,日志信息为:message
![](https://img-blog.csdnimg.cn/img_convert/de000af04b8164862895c6106759062c.png)
![](https://img-blog.csdnimg.cn/img_convert/46280d96688495473975bad1e5fb9f21.png)
注意:
有时,提交时忘记指定提交日志(少了 -m "xxxx"),
则有的系统会打开如下的记事本。输入日志保存即可。而有的系统会打开vim编辑器让你输入日志信息
vi编辑器的使用
![](https://img-blog.csdnimg.cn/img_convert/4dd24e8f6d8cb06c068a79731f7c4423.png)
有的系统则是用vim打开了文件。大家点击键盘上的i,进入插入模式,输入要添加的日志信息后,点击ESC键后,输入 :wq 即可保存修改并退出编辑,如果不想保存退出,则输入 :q
在vim中。
任意时刻,点击esc键 可以进入到普通模式
普通模式下输入 i、a 、o 可以进入插入模式,可以编辑文本信息
普通模式下输入v,进入可视模式,可以选择操作的文字,一个、一段或者多段等,进行删除、替换等等操作
普通模式下输入V。进入行可视模式。进行行选择
普通模式下输入 control +v ,进入块选模式
![](https://img-blog.csdnimg.cn/img_convert/1e4670f12897e31057a24bfe4b4eef0f.png)
![](https://img-blog.csdnimg.cn/img_convert/6701e90bbd5d82c986401fe2649af971.png)
![](https://img-blog.csdnimg.cn/img_convert/3091cfd7dc8d4e01e32097056a9a1bf3.png)
可
![](https://img-blog.csdnimg.cn/img_convert/4d8353f3e6bc82f04c0232938d5ba004.png)
![](https://img-blog.csdnimg.cn/img_convert/8d2de0270c382c88ee11e1255eb19ca1.png)
8)本地仓库信息提交到远程仓库
因为我们之前从仓库clone出来的,所以push的时候自动push到那个远程仓库了。
如果你想提交到其他远程仓库,需要是使用git remote 来添加和查看远程仓库。
![](https://img-blog.csdnimg.cn/img_convert/88f15e708f68eb9d0b7af5d1f18695fa.png)
9) 修改文件后提交到本地仓库
git add finename 将修改过的文件保存到暂存区,等待提交
git commit -m “提交日志xxxx” 将暂存区文件提交到仓库
git push 将本地仓库的内容提交到远程仓库
具体过程如下。
先修改001.txt 的第一行,修改为如下内容。
修改文件后保存。保存后文件的图标变为黄色惊叹号,表明该文件已经修改。
![](https://img-blog.csdnimg.cn/img_convert/803e3b3860659dc52f0ec2e05dad577f.png)
![](https://img-blog.csdnimg.cn/img_convert/3aedc70b50f5527d485aba652272e780.png)
之后,进行git push即可将修改提交到远程仓库了。
![](https://img-blog.csdnimg.cn/img_convert/4eb1d77236191bcefd66fcbfce781d0b.png)
10) 删除文件提交到仓库
为了方便演示,我们就演示刚才添加的文件001.txt
git rm filename 删除文件提交到暂存区
git commit -m “编写提交日志” 提交到本地仓库
git push 提交到远程仓库
![](https://img-blog.csdnimg.cn/img_convert/a89d97fb15e83d2efbe4553abc608715.png)
![](https://img-blog.csdnimg.cn/img_convert/00210eff759c30c4b3df7f8b632e3653.png)
11)查版本更新日志
git log 可以查看提交历史日志。它有很多参数可以设置查看的效果,下面是常用的几个参数
如果直接使用git log 显示信息较多,查看效果如下所示,并不是太友好
![](https://img-blog.csdnimg.cn/img_convert/2fa96cd47caf121728ae230c108d9c5c.png)
日志按照从最新到最旧的倒序时间顺序显示。
当日志较多时,会出现冒号,大家可以通过键盘的上下方向键 或者 回车键 来查看日志
如果要结束日志查看,冒号后输入q即可。
![](https://img-blog.csdnimg.cn/img_convert/42b1cb27526032bdc2ce3b5101dbd34e.png)
git log 也提供了一些参数来设置显示效果。通过这些参数可以让显示更美观,更好看些
--all 显示所有分支
--pretty=oneline 将提交信息显示为一行
--abbrev-commit 仅显示commitId的前几个字符,而非40个字符,使得更简短
--oneline 简洁形式显示提交日志
--graph 显示分支与合并历史
--reverse 按照从远到近的顺序显示提交日志
git log --pretty=oneline 和 git log --oneline 都是每行显示一个版本,但是后者的版本号更为简洁。
![](https://img-blog.csdnimg.cn/img_convert/dc62eea8dfb91bdbc8df911fbb56777c.png)
git reflog
除了日志,还显示了 head@次数 查看回退到指定版本的次数
![](https://img-blog.csdnimg.cn/img_convert/105b117ae8c3e5e4884752c609b73724.png)
git log --oneline --graph --decorate --all 是常用的日志查看命令
![](https://img-blog.csdnimg.cn/img_convert/6336dfdcd7b8352600b084fa2104593f.png)
12) 更新远程仓库文件到工作区
git pull 将远程仓库的内容拉取更新到工作区
为了做这个实验,大家可以通过浏览器 去修改文件内容 。我修改了1.txt的内容
![](https://img-blog.csdnimg.cn/img_convert/8baa669c9a2fa4970205e901c7a87c4f.png)
可以看到 git pull 之后 ,本地工作区内容更新了
![](https://img-blog.csdnimg.cn/img_convert/ddd48664be92c29b610d4e8cbd74fd60.png)
13) 更新最新的远程仓库文件到本地仓库,然后再更新工作区
关于游离态的说明
git fetch 将远程仓库 代码 更新 到本地仓库
git chekout 将本地仓库内容更新到工作区
先使用 git fetch 拉取到本地 仓库,
为了做这个实验,大家可以通过浏览器 去修改文件内容 。我修改了1.txt的内容的前8行
![](https://img-blog.csdnimg.cn/img_convert/6b31321ff452c0558c81fcc8de41af0d.png)
![](https://img-blog.csdnimg.cn/img_convert/90d831a42e7f6cf37e6209cdc379c7fb.png)
然后再使用git checkout 更新到工作区
14) 更新最新的远程仓库文件到本地仓库
git fetch 将远程仓库 代码 更新 到本地仓库
15)文件冲突的解决--待续
16)分支的操作
不错的博客
git快速入门(2)__版本比较、回退_git如何对比两个版本的差异_曹红杏的博客-CSDN博客
Git / git clone 、git pull 和 git fetch_git clone和git pull git checkout_Ruo_Xiao的博客-CSDN博客
17)本地文件提交到远程的新仓库
# 1.初始化
git init
# 2.添加所有文件到本地仓库
git add .
# 3.提交到本地仓库(备注自行修改)
git commit -m "init"
# 4.新建远程仓库
git remote add origin https://git仓库地址/分组名/仓库名.git
# 示例: git remote add origin https://github.com/xx-group/first-project.git
# 5. push到远程仓库
5.常见问题的解决方法
1) 若git未记住账号
每次push等都需要输入账号,则可以修改.git 下的 gitconfig文件
![](https://img-blog.csdnimg.cn/img_convert/366d68115418c3c07906e84df9b6f0ca.png)
修改.gitconfig配置文件,把以下内容放置到最后
[credential]
helper = store
[credential]
helper = store
2) ideal 进行团队合作开发
大家可以学习 使用gitee进行团队合作
使用Gitee用于进行团队合作,(配合数据库迁移)_gitee团队怎么用_张小白学Java的博客-CSDN博客
3)git文件不显示图标
若仓库上不显示图标
参考博客解决git文件夹不显示图标问题_git没有图标_秋风霜叶的博客-CSDN博客
4) git push 或 pull时访问被决绝403
git config --system --unset credential.helper
![](https://img-blog.csdnimg.cn/img_convert/b3f32c07b83298435cfc15a4710264a2.png)
5) TLS certificate verification has been disabled!
![](https://img-blog.csdnimg.cn/img_convert/112f375ebe48144aec5c1cb225a46f2e.png)
6)清除账号信息
![](https://img-blog.csdnimg.cn/img_convert/a4e72d8a9c42a405754421125a2ca369.png)