导图社区 Git
Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
编辑于2022-09-26 20:44:00 四川省listener 音标['lisnә] 读音 汉语翻译 n. 收听者, 听众 英语解释: 名词listener: someone who listens attentively 同义词:hearer, auditor, attender
Filter过滤器(重要) Javaweb中的过滤器可以拦截所有访问web资源的请求或响应操作。 1、Filter快速入门 1.1、步骤: 1. 创建一个类实现Filter接口 2. 重写接口中方法 d...
会话的解释 [conversation] 指两人以上的对话(多用于学习别种语言或方言时) 详细解释 (1).聚谈;对话。现多用于学习别种语言或方言时
社区模板帮助中心,点此进入>>
listener 音标['lisnә] 读音 汉语翻译 n. 收听者, 听众 英语解释: 名词listener: someone who listens attentively 同义词:hearer, auditor, attender
Filter过滤器(重要) Javaweb中的过滤器可以拦截所有访问web资源的请求或响应操作。 1、Filter快速入门 1.1、步骤: 1. 创建一个类实现Filter接口 2. 重写接口中方法 d...
会话的解释 [conversation] 指两人以上的对话(多用于学习别种语言或方言时) 详细解释 (1).聚谈;对话。现多用于学习别种语言或方言时
Git
介绍
Git:一个代码版本控制系统(VCS),可以帮助代码备份、协同工作、责任追溯等
版本控制
解决代码编写、文档编写过程中,对内容反复修改的情况
Git与SVN对比
SVN
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而开发人员工作的时候,用的都是自己的电脑,所以首先要从中央服务器下载最新的版本,然后开发,开发完后,需要把自己开发的代码提交到中央服务器。
弊端
服务器单点故障,将会导致所有人员无法工作
而服务器硬盘损坏意味着可能失去了该项目的所有历史记录
Git
Git是在2005年,Linux系统的创建者Linus Torvalds为了帮助全球的开发者,维护Linux系统内核的开发而开发了自己的开源分布式版本控制工具分为两种类型的仓库:本地仓库和远程仓库
优点
每一个客户端都保存了完整的历史记录
服务器的故障,都可以通过客户端的记录得以恢复
下载安装
下载
官网:https://git-scm.com/downloads
安装
双击exe文件,改安装地址,一路下一步
安装完成后在电脑桌面(也可以是其他目录)点击右键,如果能够看到如下两个菜单则说明Git安装成功。
补充
Git GUI
Git提供的图形界面工具
Git Bash
Git提供的命令行工具
使用git --version命令可以查看git版本
工作流程
介绍
工作区
程序员进行开发改动的地方,是你当前看到的,也是最新的
平常开发就是拷贝远程仓库中的一个分支,基于该分支进行开发。在开发过程中就是对工作区的操作
暂存区
.git目录下的index文件, 暂存区会记录git add添加文件的相关信息(文件名、大小、timestamp...),不保存文件实体, 通过id指向每个文件实体。可以使用git status查看暂存区的状态。暂存区标记了当前工作区中,哪些内容是被git管理的。
当完成某个需求或功能后需要提交到远程仓库,那么第一步就是通过git add先提交到暂存区,被git管理
本地仓库
保存了对象被提交过的各个版本,比起工作区和暂存区的内容,它要更旧一些
git commit后同步index的目录树到本地仓库,方便从下一步通过git push同步本地仓库与远程仓库的同步
远程仓库
远程仓库的内容可能被分布在多个地点的处于协作关系的本地仓库修改,因此它可能与本地仓库同步,也可能不同步,但是它的内容是最旧的
总结
任何对象都是在工作区中诞生和被修改
任何修改都是从进入index区才开始被版本控制
只有把修改提交到本地仓库,该修改才能在仓库中留下痕迹
与协作者分享本地的修改,可以把它们push到远程仓库来共享
分支管理
介绍
分支(branch):由每次提交的代码,串成的一条时间线。使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线
分支使用场景
周期较长的模块开发
尝试性的模块开发
Master
指向提交的代码版本
始终指向当前所处分支的最新的提交点。所处的分支变化了,或者产生了新的提交点,HEAD就会跟着改变
Head
指向当前所使用的分支
分支操作
例子
查看(展示)
git branch
列出所有本地分支
git branch -v
所有本地分支详细信息
git branch -r
列出所有远程分支
git branch -a
列出所有本地分支和远程分支
创建
git branch 分支名
新建一个分支,但依然停留在当前分支
git checkout -b 分支名
新建一个分支,并切换到该分支
git branch --track [branch] [remote-branch]
新建一个分支,与指定的远程分支建立追踪关系
切换
git checkout 分支名
切换到指定分支,并更新工作区
git switch 分支名
切换到指定分支
合并
git merge 分支名
合并指定分支到当前分支
git fetch [remote]
合并前先拉一下远程仓库最新代码
衍合
git rebase 分支名
衍合指定分支到当前分支
删除
git branch -d 分支名
删除分支
git push origin --delete 分支名
删除远程分支
补充
合并和衍合的对比
合并
衍合
merge操作会生成一个新的节点,之前的提交分开显示。而rebase操作不会生成新的节点,是将两个分支融合成一个线性的提交
如果你想要一个干净的,没有merge commit的线性历史树,那么你应该选择git rebase
如果你想保留完整的历史记录,并且想要避免重写commit history的风险,你应该选择使用git merge
代码冲突
介绍
两个分支中编辑的内容都是相互独立互不干扰的,那么如果在两个分支中都对同一个文件进行编辑,然后再合并,就有可能会出现冲突
表现
执行拉取命令后,冲突文件有个黄色感叹号下标,查看文件时会在里面添加冲突标识符
<<<<<<<和>>>>>>>中间的内容,就是冲突部分
解决
1.修改冲突行,保存,即可解决冲突。
在Tortoise中仅需在冲突文件上单机右键选择“解决冲突”菜单项
2.重新add冲突文件并commit到本地仓库,重新push到远程
基本操作
本地仓库
命令
速查表
常用
git init
初始化,创建git仓库
git status
查看git状态(文件是否进行了添加、提交操作)
命令行界面出现红色内容,这些红色内容就是未曾添加的内容
git add
添加,将指定文件添加到暂存区
实现将工作区修改的内容提交到暂存区,交由git管理
git add .
添加所有
git commit
提交,实现将暂存区的内容提交到本地仓库,并使得当前分支的HEAD向后移动一个提交点
git commit -m '描述信息'
对提交进行备注
git diff
显示暂存区和工作区的差异
历史版本切换
git log
查看日志(git提交的历史日志)
出现黄色标识,可用此标识进行版本的切换回退等操作
git reflog
可以查看所有分支的所有操作记录(包括已经被删除的commit记录的操作)
git reset --hard 版本唯一索引值
版本切换命令
远程仓库
工作流程
平台介绍
Github
https://github.com
码云
https://gitee.com
相关命令
git remote -v
查看当前所有远程地址别名
git remote add 远程名称 远程仓库URL
为远程仓库取别名
git push 别名 分支
推送本地分支上的内容到远程仓库
git clone 远程地址
将远程仓库的内容克隆到本地
clone 会做如下操作。1、拉取代码。2、初始化本地仓库。3、创建别名
git pull 远程库地址别名 远程分支名
将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并
操作情况
先有本地仓库,远程仓库为空
1.创建远程仓库
2.SSH 免密登录
1,设置Git账户
git config user.name:查看git账户
git config user.email:查看git邮箱
git config --global user.name "账户名":设置全局账户名
git config --global user.email "邮箱":设置邮箱
2,生成SSH公钥
cd ~/.ssh
查看是否生成过SSH公钥
No such file or directory:如果看到这句话代表没有生成过SSH
ssh-keygen -t rsa -C "邮箱"
生成SSH公钥
还需要敲三次回车
cat ~/.ssh/id_rsa.pub
查看公钥
3,设置账户公钥
在平台中设置
4,公钥测试
ssh -T git@gitee.com
补充
SSH 为 Secure Shell(安全外壳协议)的缩写,由 IETF 的网络小组(Network Working Group)所制定。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题
3.推送到远程仓库
1.为远程仓库的URL(网址),自定义仓库名称
git remote add 远程名称 远程仓库URL
2.推送
git push -u 仓库名称 分支名
先有远程仓库,本地仓库为空
1.将远程仓库的代码,克隆到本地仓库
git clone 仓库地址
2.创建新文件,添加并提交到本地仓库
3.推送至远程仓库
4.项目拉取更新
git pull 远程仓库 名分支名
IDEA集成Git
配置步骤
1.打开File---Settings菜单项
2.Version Control---Git--指定git.exe存放目录
3.点击Test测试
若成功会跳出Git版本信息
本地仓库操作
创建本地仓库
1.VCS----Import into Version Control----Create Git Repository
2.选择模块所在的上级目录作为本地仓库
3.操作栏会出现Git操作按钮
历史版本切换
Reset切换
Log---Reset Current Branch to Here---Hard----Reset
注意
这种切换会抛弃原来的提交记录
Revert切换
Revert Commit---Merge---Commit
注意
Revert操作会当成一个新的提交记录,如果后悔了"回退"这个操作也可以回退到没有回退之前的版本因为历史记录还保留提交记录
分支管理
创建
VCS---Git---Branches---New Branch
给出新分支名称
如果勾选了Checkout branch代表创建后会自动切换
切换
VCS---Git---Branches---分支名---Checkout
右下角Git---分支名---Checkout
合并
VCS---Git---Merge Changes---Merge
有可能出现代码冲突,解决掉代码冲突才能合并
删除
VCS---Git---Branches---分支名---Delete
远程仓库操作
本地推送到远程
1.VCS---Git---Push
2.给远程URL指定名称---Push
远程克隆到本地
主页Check out from Version Control---Git---填写URL---Clone
主题