2021最新最全!IntelliJ Idea如何使用使用Git!Git到底是什么!(值得一看)
IntelliJ Idea如何使用使用Git!Git到底是什么!
- 前言
- 一、Git是什么
- 二、Git 工作区、暂存区和版本库、远程仓库
- 三、Git与SVN的区别
- 3.1 存储方式
- 3.2 使用方式
- 3.3 管理模式
- 四、Git使用
- 4.1 Git开始、Git 速成
- 4.2 环境配置
- 4.3 创建仓库
- 4.4 pull与push
- 4.5 git分支管理
- 4.5 本地仓库操作
- 五、常用命令速查
前言
在开发的时候,需要合并Git的分支,然后菜菜就兴致勃勃去了,结果!!!菜菜竟然不会了,然后概念也有些模糊了,在查阅了资料过后发现资料有些老旧以及不够集中,耽搁了菜菜摸鱼的时间,太过分了!太过分了!太过分了!
借此机会,把Git来好好学下,温故而知新,摸鱼一整天!冲冲冲!
一、Git是什么
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
在开发中,Git已成为现在主流的一种代码托管技术(版本管理工具),基本上大多数的公司都在使用Git进行协同开发。很多代码托管平台也是基于Git来实现的。
Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。大家在工作学习中,应该接触过Git、GitLab、Github三个概念名称,来看下他们之间的联系与区别:
名称 | 含义 |
---|---|
Git | 版本控制系统(SVN),是一种工具/命令 |
GitLIb | 实现git功能的开发库 |
GitHub | 开放的在线代码仓库 |
GitLab | 一般是内部的在线代码仓库 ,搭建私服,类似于github 。利用Ruby on Rail开发的开源应用程序,实现一个自托管的Git项目仓库,可以通过web界面进行访问公开的或者私人项目 |
我们使用Git可以为我们做到以下事情,来节省我们摸鱼时间:
- 版本控制,分支管理
- 本地仓库与原创仓库提交,拉取,合并,推送
- 协同开发,整个团队中所有人都可以访问
二、Git 工作区、暂存区和版本库、远程仓库
工作区Workspace
就是你在电脑里能看到的目录,平时存放项目代码的地方
暂存区Index / Stage
暂存区有时也叫作索引(index),一般存放在 .git 目录下的 index 文件(.git/index)中,事实上它只是一个文件,保存即将提交到文件列表信息
版本库/仓库区 Repository
工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
远程仓库Remote
远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
找到一个图,很形象,可以有助于理解,来源
三、Git与SVN的区别
由于SVN也比较流行,也时不时的在使用,菜菜在这里就做个两者的区别分析
3.1 存储方式
- Git按照元数据的方式将文件的一个版本存入了一个类似与K/V数据库,类似Map<K,V>,将内容存储在Git数据库后,会返回我们一个类似Key的钥匙给我们
- SVN是按照文件的方式进行一个存储。
3.2 使用方式
本地把文件推送到远程服务
SVN
commit
Git
add、commit、push
3.3 管理模式
- Git是一个分布式的管理系统,本地含有完整的Git仓库,远程仓库有的功能本地Git仓库基本都有
- 而SVN是远程集中式的管理系统,远程仓库挂了就它就挂了
接下来就不说废话了,直接上我们日常常用功能
四、Git使用
这里示例是使用IntelliJ Idea哈,不深入讲Git Bush哈~
4.1 Git开始、Git 速成
第一步,我们先新建一个文件夹,在文件夹里新建一个文件
第二步,进入文件夹,执行git init,创建新的 git 仓库
git init
第三步,创建一个本地仓库
git clone /path/to/repository //创建一个本地仓库的克隆版本
git clone username@host:/path/to/repository //远端服务器上的仓库
工作流:
你的本地仓库由 git 维护的三棵“树”组成。
第一个是你的 工作目录,它持有实际文件;
第二个是 暂存区(Index),它像个缓存区域,临时保存你的改动;
第三个是 HEAD,它指向你最后一次提交的结果
第四步,添加和提交
git add <filename>
git add *
第五步,提交到了 HEAD
git commit -m "代码提交信息"
第六步, 从HEAD 中提交到远端仓库
git push origin master //可以把 master 换成你想要推送的任何分支
git remote add origin <server> //将你的仓库连接到某个远程服务器
第七步,分支学习
git checkout -b b1 //创建一个叫做“b1”的分支,并切换过去
git checkout master //切换回主分支
git branch -d b1 //删除建的b1分支
git push origin <branch> //将分支推送到远端仓库
第八步,更新与合并
git pull //更新你的本地仓库至最新改动
git merge <branch> //合并其他分支到你的当前分支,可能出现冲突(需要手动合并这些冲突)
git add <filename> //改完之后,将它们标记为合并成功
git diff <source_branch> <target_branch> //合并改动之前,预览差异
4.2 环境配置
设置用户信息
git config --global user.name "xxxxx"
git config --global user.email xxxxxxx@qq.com
查看配置信息
git config --list
git config user.name
4.3 创建仓库
git init newDir //在本地初始化一个git仓库
git clone <url> [directory] //clone一个git仓库
4.4 pull与push
git push 使用本地的对应分支来更新对应的远程分支
git push <远程主机名> <本地分支名>:<远程分支名>
git push origin master
项目-》右键-》Git-》Repository-》Push
git pull 获取并合并其他的厂库,或者本地的其他分支
git pull <远程主机> <远程分支>:<本地分支>
git pull origin master:dev
项目-》右键-》Git-》Repository-》Pull
4.5 git分支管理
查看分支,前面带*号的就是当前分支
git branch * devmaster
项目-》右键-》Git-》Repository-》branches
创建分支
git branch 分支名
项目-》右键-》Git-》Repository-》branches-》New Branch
切换当前分支到指定分支
git checkout 分支名
项目-》右键-》Git-》Repository-》branches-》New Branch-》左键选中-》checkout
创建分支并切换到创建的分支
git checkout -b 分支名
合并某分支的内容到当前分支
git merge 分支名
删除分支
git branch -d 分支名
小结;
git branch //查看分支命令
git branch (branchname) //创建分支命令
git checkout (branchname) //切换分支命令
git merge //合并分支命令
git branch -d (branchname) //删除分支命令
4.5 本地仓库操作
查看文件状态
git status //查看文件状态
git status -s //更加具体的简介
将未跟踪的文件加入暂存区
git add dirUrl
git add . //把工作时的所有变化提交到暂存区
git add -u //git add --update的缩写,会将被修改的文件提交到暂存区。add -u 不会提交新文件
commit 命令将暂存区内容添加到本地仓库中
git commit -m [message]
git commit [file1] [file2] ... -m [message] //提交暂存区的指定文件到仓库区
git commit -a //参数设置修改文件后不需要执行 git add 命令,直接来提交
五、常用命令速查
命令 | 解释 |
---|---|
git clone url | 克隆远程仓库 |
git init | 初始化本地 git 仓库(新建仓库) |
git status | 查看当前版本状态(是否修改) |
git diff | 显示所有未添加至 index 的变更 |
git diff HEAD | 查看已缓存的与未缓存的所有改动 |
git add | 将该文件添加到缓存 |
git commit -m ‘xxx’ | 提交 |
git commit --amend -m ‘xxx’ | 合并上一次提交(用于反复修改) |
git commit -am ‘xxx’ | 将 add 和 commit 合为一步 |
git remote -v | 列出远程分支详细信息 |
git remote show | 显示某个分支信息 |
git remote add | 添加一个新的远程仓库 |
git fetch | 获取远程分支,但不更新本地分支,另需 merge |
git pull | 获取远程分支,并更新本地分支 |
git push | 推送本地更新到远程分支 |
git push --delete | 删除一个远程分支 |
git push --tags | 推送本地标签 |
git merge | 合并分支到当前分支,存在两个 |
git rebase | 合并分支到当前分支,存在一个 |
git rebase --abort | 回到执行 rebase 之前 |
git rebase --continue | 解决矛盾后继续执行 rebase |
git mergetool | 使用 mergetool 解决冲突 |
git add | 使用冲突文件解决冲突 |
git reset --hard HEAD | 将当前版本重置为 HEAD(用于 merge 失败) |
git reset --hard | 将当前版本重置至某一个提交状态(慎用!) |
git reset | 将当前版本重置至某一个提交状态,代码不变 |
git reset --merge | 重置至某一状态,保留版本库中不同的文件 |
git reset --keep | 重置至某一状态,重置变化的文件,代码改变 |
git checkout HEAD | 丢弃本地更改信息并将其存入特定文件 |
git revert | 撤消提交 |
git log | 查看提交历史 |
git log -p | #查看指定文件的提交历史 |
git blame | 以列表方式查看指定文件的提交历史 |
2021最新最全!IntelliJ Idea如何使用使用Git!Git到底是什么!(值得一看)相关推荐
- 【Java开发】2021最新最全的Java开发工程师学习路线
2021最新最全的Java开发学习路线 阶段一 (夯实基础) 一.Java基础语法 二.Java面向对象编程 三.Java核心类库 四.XML与JSON 五.算法与数据结构 六.数据库 七.JDBC技 ...
- PS 2021最新最全插件滤镜大全一键安装版下载 Photoshop插件合集WIN一键安装版 支持PS 2021
PS 2021最新最全插件滤镜大全一键安装版下载 Photoshop插件合集WIN一键安装版 支持PS 2021 原文及下载地址:https://www.aeziyuan.com/t-19256.ht ...
- 2021最新最全前端面试题(包含HTML、CSS、JavaScript、Vue、React、浏览器、算法与数据结构等)
整理了一些前端面试题,希望对正在找前端工作的伙伴有用.本篇文章内容篇幅较大,主要针对初中级前端开发工程师. 篇幅过长,大家可以先点赞收藏以后慢慢看. 关于HTML 的title和alt属性有什么区别 ...
- HR小姐姐都能学会的2021最新最全云计算运维学习专栏
我是互联网老辛,关注我吧,给自己每天的进步找一个机会和理由,不要被无效信息淹没,免除知识焦虑 建议关注收藏,本文会持续更新: 前言 后台很多粉丝问,学习运维需要学习哪些内容? 我结合21年的招聘要求, ...
- 四面阿里斩获offer定级P7,2021最新最全阿里巴巴68道高级面试题
线程池由哪些组件组成? 有哪些线程池,分别怎么使用?拒绝策略有哪些? 什么时候多线程会发生死锁,写一个例子? Redis的数据结构是什么? 线程模型说一下? 讲讲Redis的数据淘汰机制? 说说Red ...
- 呕心沥血三天三夜整理出2021最新最全微信小程序开发资源汇总
前言: 本文收集了微信小程序开发过程中会使用到的资料.问题以及第三方组件库.本文不是一篇关于如何学习微信小程序的入门指南,也非参考手册,只是一些资料的整理. 置顶 WePY:组件化的小程序开发框架
- 触控显示黑科技轮番上阵, 2021深圳国际全触与显示展打造“看”、“触”、“听”盛会...
作为行业知名历史悠久的触控显示行业展览会,深圳国际全触与显示展(C-TOUCH & DISPLAY SHENZHEN 2021)已经连续举办了25届,每一届取得的成果颇丰:可以从多维的视角洞察 ...
- 2021年最新最全Flink系列教程_Flink快速入门(概述,安装部署)(一)(JianYi收藏)
文章目录 引言 相关教程直通车: day01_Flink概述.安装部署和入门案例 今日目标 Flink概述 什么是批处理和流处理 为什么需要流计算 Flink的发展史 Flink的官方介绍 Flink ...
- 2021年最新最全面的Java视频教程!!!
2021年最新最全面的Java视频教程!!! 这套资料是楼主精心准备和搜集的Java学习视频,也希望分享给大家一起学习Java~ 第1阶企业级开发-Java基础 本套视频一共24天 本套视频一共30天 ...
最新文章
- trinosql_prestosql问题
- 人人都是架构师: 约束和原则
- 现代操作系统: 第一章 引言
- 为什么说5G会提前于2018年到来?
- html session 登录页面跳转页面跳转页面,session失效后跳转到登陆页面
- npm run dev/build/serve
- 瓦尔都窗前的一瞥 ①
- 懒人修仙传ce修改方法_专访|《凡人修仙传》原著作者忘语:“韩老魔”原型是我...
- SMS中关于xp的sp3补丁的分发
- python题目关于企业利润_Python练习题(一)
- 这才叫会PS,普通照片分分钟P成好莱坞海报!
- EasyCVR边缘计算网关助力安防视频场景化AI落地,让智能无处不在
- win11 删除自带的微软输入法
- 使用excel公式vlookup提取多个表中的数据
- Python Turtle 画图:黑洞里的繁星(附源代码)
- python 验证码 高阶验证
- kettle闪退问报错无法打开图形界面ETI安装问题
- 摘录--《人间》余秀华
- html ios编程工具,DevmyApp:傻瓜式iOS应用程序开发软件
- war包访问php,nginx - JAVA 项目WAR包部署的适用场景?
热门文章
- summernote禁止图片视频上传
- python快速处理ppt_使用python-pptx包批量修改ppt格式的实现
- Verilog语言乒乓球机7段译码器
- java接口返回map集合数据;前端ajax获取,遍历时无序
- angular_angular教程_angular_视频教程
- Amazon多账号运营需要注意哪些问题
- 相对论漫谈(原著:幽灵蝶)
- 洛谷-P4924 [1007]魔法少女小Scarlet 题解
- 如何解决make时报错crti. o: unrecognized relocation (0x2a) in section `.init
- getapp.php,getApp.php