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可以为我们做到以下事情,来节省我们摸鱼时间:

  1. 版本控制,分支管理
  2. 本地仓库与原创仓库提交,拉取,合并,推送
  3. 协同开发,整个团队中所有人都可以访问

二、Git 工作区、暂存区和版本库、远程仓库

工作区Workspace

就是你在电脑里能看到的目录,平时存放项目代码的地方

暂存区Index / Stage

暂存区有时也叫作索引(index),一般存放在 .git 目录下的 index 文件(.git/index)中,事实上它只是一个文件,保存即将提交到文件列表信息

版本库/仓库区 Repository

工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本

远程仓库Remote

远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换

找到一个图,很形象,可以有助于理解,来源

三、Git与SVN的区别

由于SVN也比较流行,也时不时的在使用,菜菜在这里就做个两者的区别分析

3.1 存储方式

  1. Git按照元数据的方式将文件的一个版本存入了一个类似与K/V数据库,类似Map<K,V>,将内容存储在Git数据库后,会返回我们一个类似Key的钥匙给我们
  2. SVN是按照文件的方式进行一个存储。

3.2 使用方式

本地把文件推送到远程服务
SVN

commit

Git

add、commit、push

3.3 管理模式

  1. Git是一个分布式的管理系统,本地含有完整的Git仓库,远程仓库有的功能本地Git仓库基本都有
  2. 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到底是什么!(值得一看)相关推荐

  1. 【Java开发】2021最新最全的Java开发工程师学习路线

    2021最新最全的Java开发学习路线 阶段一 (夯实基础) 一.Java基础语法 二.Java面向对象编程 三.Java核心类库 四.XML与JSON 五.算法与数据结构 六.数据库 七.JDBC技 ...

  2. PS 2021最新最全插件滤镜大全一键安装版下载 Photoshop插件合集WIN一键安装版 支持PS 2021

    PS 2021最新最全插件滤镜大全一键安装版下载 Photoshop插件合集WIN一键安装版 支持PS 2021 原文及下载地址:https://www.aeziyuan.com/t-19256.ht ...

  3. 2021最新最全前端面试题(包含HTML、CSS、JavaScript、Vue、React、浏览器、算法与数据结构等)

    整理了一些前端面试题,希望对正在找前端工作的伙伴有用.本篇文章内容篇幅较大,主要针对初中级前端开发工程师. 篇幅过长,大家可以先点赞收藏以后慢慢看. 关于HTML 的title和alt属性有什么区别 ...

  4. HR小姐姐都能学会的2021最新最全云计算运维学习专栏

    我是互联网老辛,关注我吧,给自己每天的进步找一个机会和理由,不要被无效信息淹没,免除知识焦虑 建议关注收藏,本文会持续更新: 前言 后台很多粉丝问,学习运维需要学习哪些内容? 我结合21年的招聘要求, ...

  5. 四面阿里斩获offer定级P7,2021最新最全阿里巴巴68道高级面试题

    线程池由哪些组件组成? 有哪些线程池,分别怎么使用?拒绝策略有哪些? 什么时候多线程会发生死锁,写一个例子? Redis的数据结构是什么? 线程模型说一下? 讲讲Redis的数据淘汰机制? 说说Red ...

  6. 呕心沥血三天三夜整理出2021最新最全微信小程序开发资源汇总

    前言: 本文收集了微信小程序开发过程中会使用到的资料.问题以及第三方组件库.本文不是一篇关于如何学习微信小程序的入门指南,也非参考手册,只是一些资料的整理. 置顶 WePY:组件化的小程序开发框架 

  7. 触控显示黑科技轮番上阵, 2021深圳国际全触与显示展打造“看”、“触”、“听”盛会...

    作为行业知名历史悠久的触控显示行业展览会,深圳国际全触与显示展(C-TOUCH & DISPLAY SHENZHEN 2021)已经连续举办了25届,每一届取得的成果颇丰:可以从多维的视角洞察 ...

  8. 2021年最新最全Flink系列教程_Flink快速入门(概述,安装部署)(一)(JianYi收藏)

    文章目录 引言 相关教程直通车: day01_Flink概述.安装部署和入门案例 今日目标 Flink概述 什么是批处理和流处理 为什么需要流计算 Flink的发展史 Flink的官方介绍 Flink ...

  9. 2021年最新最全面的Java视频教程!!!

    2021年最新最全面的Java视频教程!!! 这套资料是楼主精心准备和搜集的Java学习视频,也希望分享给大家一起学习Java~ 第1阶企业级开发-Java基础 本套视频一共24天 本套视频一共30天 ...

最新文章

  1. trinosql_prestosql问题
  2. 人人都是架构师: 约束和原则
  3. 现代操作系统: 第一章 引言
  4. 为什么说5G会提前于2018年到来?
  5. html session 登录页面跳转页面跳转页面,session失效后跳转到登陆页面
  6. npm run dev/build/serve
  7. 瓦尔都窗前的一瞥 ①
  8. 懒人修仙传ce修改方法_专访|《凡人修仙传》原著作者忘语:“韩老魔”原型是我...
  9. SMS中关于xp的sp3补丁的分发
  10. python题目关于企业利润_Python练习题(一)
  11. 这才叫会PS,普通照片分分钟P成好莱坞海报!
  12. EasyCVR边缘计算网关助力安防视频场景化AI落地,让智能无处不在
  13. win11 删除自带的微软输入法
  14. 使用excel公式vlookup提取多个表中的数据
  15. Python Turtle 画图:黑洞里的繁星(附源代码)
  16. python 验证码 高阶验证
  17. kettle闪退问报错无法打开图形界面ETI安装问题
  18. 摘录--《人间》余秀华
  19. html ios编程工具,DevmyApp:傻瓜式iOS应用程序开发软件
  20. war包访问php,nginx - JAVA 项目WAR包部署的适用场景?

热门文章

  1. summernote禁止图片视频上传
  2. python快速处理ppt_使用python-pptx包批量修改ppt格式的实现
  3. Verilog语言乒乓球机7段译码器
  4. java接口返回map集合数据;前端ajax获取,遍历时无序
  5. angular_angular教程_angular_视频教程
  6. Amazon多账号运营需要注意哪些问题
  7. 相对论漫谈(原著:幽灵蝶)
  8. 洛谷-P4924 [1007]魔法少女小Scarlet 题解
  9. 如何解决make时报错crti. o: unrecognized relocation (0x2a) in section `.init
  10. getapp.php,getApp.php