git
一、git简介
GIt:免费的、开源的分布式版本控制工具。,可以快速高效地处理从小型到大型的各种项目。
1.1 何为版本控制
版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。
版本控制最重要的是可以记录文件修改历史记录,从而能让用户查看历史版本,方便版本切换。
1.2 为什么需要版本控制
从个人开发过渡到团队协作。
多副本的版本控制并不可靠。
1.3 Git的特点
像 Git 这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码
仓库完整地镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用
其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次
对整个文件仓库的完整备份。
分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷:
-
服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
-
每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)
1.4 git工作机制
1.6 git和代码托管中心
代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库。
局域网
GitLab
互联网
GitHub(外网)
Gitee 码云(国内网站)
1.7git安装
Git高速下载地址:https://npm.taobao.org/mirrors/git-for-windows/,选择对应自己电脑的新版本,无脑下一步就行。
二、git常用命令
2.1 git常用命令
2.2 设置签名
签名的作用是区分不同操作者的身份,首次安装git需要设置用户签名,否则无法提交代码。
语法:
git config --global user.name 用户名
git config --global user.email 邮箱
2.3 初始化本地库
选择一个磁盘位置作为本地库(工作区),在这个文件夹内右键打开git bash here,输入git init命令,结果如图:
2.4 查看本地库状态
第一次查看由于本地库中什么都没有,git会提示你:
我们可以在当前文件夹中创建一个hello.txt
再次输入git status命令:
这时可以看到,还是没有提交过东西,但是出现了一个Untracked files,这个表示hello.txt是未被git追踪的文件,它提示我们使用git add命令(添加暂存区)。
注意此时hello.txt是红色的。
2.5 添加暂存区
使用git add命令,将文件提交到暂存区
然后再次查看一下本地库状态:
hello.txt此时已经由红色变为绿色,说明git已经追踪到这个文件,当前文件已经存在暂存区中。
暂存区中的文件是可以被删掉的,使用git rm --cached命令:
已经提示删掉了暂存区中的hello.txt,但是工作区中的hello.txt文件还在
2.6 提交本地库
git commit -m “日志信息” 文件名
再次查看本地库状态:
2.7 查看历史版本
git reflog 查看版本信息
git log 查看版本详细信息
黄色的一长串是版本号。
2.8版本切换
使用git reset --hard 版本号:
使用relog查看版本信息:
三、git分支
3.1什么是分支
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独
分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时
候,不会影响主线分支的运行。
3.2 分支的好处
-
同时并行推进多个功能开发,提高开发效率。
-
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败
的分支删除重新开始即可。
3.3 分支的操作
3.3.1 查看分支
3.3.2 创建分支
3.3.3 切换分支
3.3.4 合并分支
master、hot-fix 其实都是指向具体版本记录的指针。当前所在的分支,其实是由 HEAD
决定的。所以创建分支的本质就是多创建一个指针。
HEAD 如果指向 master,那么我们现在就在 master 分支上。
HEAD 如果执行 hotfix,那么我们现在就在 hotfix 分支上。
合并分支后只会改变master分支,并不会改变hot-fix分支。
四、团队协作与跨团队协作
4.1 团队协作
4.2 跨团队协作
fork:叉子;把一个远程库的代码弄到自己的远程库,俗称叉过来。
gitHub
一、创建远程库&别名
查看目前已有的别名:
二、clone、push、pull
clone:将别人公开仓科中的项目克隆到本地
pull:已经存在本地库的情况下,将远程库中的代码拉去到本地库
push:将本地库的代码推送到远程库。
Idea集成git
不得不说idea真的强大!
在这里查看版本信息
然后可以直接点击切换版本:选中想要切换的版本,直接右键即可。
clone: