1.GIT介绍
Git官网 下载:直接点击官网右侧的最新版本下载,它会自动根据电脑版本下载
Git是免费的,开源的分布式版本控制系统。可以快速的处理各种大中小型项目,易于学习,性能快,体积小,方便的暂存区域和多个工作流分支等特性,性能比svn,csv等版本控制工具好。
什么是版本控制:记录文件内容变化,以便查阅特定版本修改的情况,和版本的切换。
为什么需要:当一个人开发项目时,你会遇到要修改代码,但是你又不确定你改代码后不会出现问题,你就会保存一份副本。
但是当进行团队开发时候者就很难操作了,就需要版本控制工具来记录每个人的修改,合并到一起。
分布式版本控制和集中式版本控制的区别:1.分布式的服务器挂了也可以开发,因为版本控制实在本地进行的,等服务器好了就可以提交
2.每个客户端保存的都是整个完整的项目(包含历史纪录,更安全)
发展历史:
Git工作机制:
工作区:存放代码的位置
暂存区:工作区修改代码后,可以使用git add把修改添加到暂存区
本地库:可以使用git commit把暂存区提交到本地库,就会生成对应的历史版本。无法删除,除非把整个本地库删了(删库跑路)
Git和代码托管中心:
代码托管中心是基于网络服务器的远程代码仓库,也就是远程库
局域网:
- Git Lab
互联网:
- GitHub(外网)
- Gitee 码云(国内)
Git安装
下一步傻瓜式安装就好。安装成功后桌面右键就可以看到Git Gui 和Git bash
Git Gui :图形化界面(用的少)
Git bash:(bash客户端)用这个
在gitcash中使用git --version查看版本。
GIT常用命令:
命令 作用 git config --global user.name 用户名 设置用户签名 git config --global user.email 邮箱 设置用户邮箱 git init 初始化本地库 git status 查看本地库状态 git add 添加到暂存区 git rm --cached 文件名 将对应文件移除暂存区 git commit -m "日志信息" 文件名 只能提交暂存区文件到本地库,注意日志信息要加“”,不使用-m添加信息,提交时他也会跳出窗口让我们提交 git reflog 查看历史记录
git log 查看版本详细信息 git reset --hard 版本号 版本穿梭 git restore <文件名> 删除工作区对应文件的修改 注意删除的是修改的内容不是整个文件删除 git restore --staged <file> 删除暂存区对应文件的修改,工作区文件不变,注意同上
1.设置邮箱和用户名
设置邮箱和用户名,可以不用真实的邮箱 (首次安装必须设置否则无法提交代码),签名的作用时区分不同操作者的身份,用户签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。这个用户签名和用来登陆git hub的账号没有任何关系。
可以到用户目录下的.gitconfig文件查看。
2.初始化本地库
在对应目录下打开git bash(或者桌面打开然后再进入对应文件)
执行git init,可以看到再目录下生成一个.git的文件
或者直接使用ll -a命令查看,隐藏文件不能直接使用ll查看。
3.git status 查看本地库状态
On branch master:表示当前再master主分支里
No commits yet:还没提交过东西
nothing to commit (create/copy files and use "git add" to track):没东西可以提交
先添加个文件,在bash可以使用vim,编辑完保存
可以使用cat 文件名查看文件内容
使用tail -n 行数 文件名 查看最后一行内容
这时候继续查看本地库状态
Untracked files:
(use "git add <file>..." to include in what will be committed) :表示对应文件存在工作区了但是还没有追踪,需要添加到暂存区
4.git add 添加到暂存区
warning: LF will be replaced by CRLF in hell.java.
The file will have its original line endings in your working directory:表示自动帮我们转化了行末换行符继续查看状态
表示hello.java存在暂存区了,还提示可以使用git rm --cached 文件名移出暂存区
执行:git rm --cached 文件名,可以看到对应文件被移除暂存区了,不过工作区的文件还是存在的
5.git commit -m 日志信息 文件名
git commit -m 日志信息 文件名:如果不加-m他也会跳出来一个页面让我们填写日志信息
添加后继续查看状态:
表示自上次提交本地没有变化(没新增也没修改删除)
6.git reflog 查看历史记录
git log 查看详细信息:一长串2的数字表示版本号,后面还有用户名和邮箱,提交的日志
7.git reset --hard 版本号: 版本穿梭
git reflog查看信息左边就有版本号。
版本穿梭后git log查看不到这个版本后面的版本信息了,git reflog却可以看到
分支
此图片来自B站视频教程
什么是分支:
几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。
有人把 Git 的分支模型称为必杀技特性,而正是因为它,将 Git 从版本控制系统家族里区分出来。
好处:1.同上推进多个功能的开发,提高开发效率
2.各个分支开发过程中。如果一个分支开发失败,不会对其他分支有任何影响,失败的分支删除重新开始就可以了
分支操作
命令名称 作用 git branch 分支名
创建分支 git branch -v 查看分支 git checkout 分支 切换分支 git merge 分支名 把指定分支合并到当前分支上
1.查看分支
master主分支 34xxxx这个分支的版本号 后面就是日志信息
2.创建分支
可以看到创建了一个hot-fix分支,不过当前分支还是master
2.
3.切换分支
git checkout 分支
可以看到分支从master切换到了hot-fix上了
在这个分支上的修改不会影响其他分支的内容,切换回其他分支,对应内容也会变成其他分支的内容。
4.合并分支
git merge 分支名
将hot-fix分支合并到master分支上。
正常合并没有冲突
分支的冲突:
产生原因:合并的分支和被合并的分支的通风一个文件的内容被修改并提交了,然后再分支中合并另一个分支,git就不知道该如何合并就产生了冲突。
冲突的解决:
可以使用vim打开冲突文件
然后修改文件,把不需要的删除然后保存
然后允许git add添加到暂存库,
然后使用git commit 提交代码:注意这里不能加文件名,不然会出错
看下面。冲突了提交带文件名会提示合并中的代码无法部分提交
其他:合并分支只会修改当前分支下的内容,不会修改另一个分支。
git团队协作机制
团队内协作:图片来自开头视频链接
跨团队协作: