目录

一、定义:

二、两大特点:

三、常用命令:

四、分支管理:

五、git 要点小记:

六、终端如何生成github上的ssh公钥,gitlab通用(在家目录下操作)

七、克隆项目

八、不小心commit后如何撤销

九、多次commit如何合并成一个commit

一、定义:

开发项目时进行代码管理时常用的一个工具。

二、两大特点:

版本控制分布式

三、常用命令:

  • git init #帮忙创建一个人版本库
  • git add code.txt #在仓库添加了code.text这个文件
  • git commit -m '版本1‘ #进行了提交
    • #两个命令加起来才是创建了一个版本,’版本1‘是你所创建版本的一个说明信息。
  • git log #查看创建的版本记录。
    • (commit后有一串信息,它是你创建版本的序列号)
  • git reset --hard HEAD^ #版本回退,如果想回到某一个版本可使用该命令。
    • (HEAD^与HEAD~1等价,HEAD^表示当前版本的前一个版本,HEAD^^表示当前版本的前两个版本,HEAD~100表示当前版本的前100个版本,HEAD相当于一个指针)
  • git reset --hard 版本序列号 #可以回到该序列号的版本。
  • git reflog #可查看操作记录。
    • (如果把终端关了,再打开终端,看不到版本号,可使用该命令)
  • git checkout -- <文件>#丢弃工作区的改动
  • git reset HEAD code.txt
    • #如果将文件的修改已经加到暂存区了,还想丢弃改动可使用该命令,把暂存区的修改撤销,回到工作区,再使用丢弃工作区的改动命令。(若已经提交了不合适的修改到版本库,参考版本回退。)
  • git diff HEAD -- code.txt 
    • #对比两个文件不同(输出内容中前面若无加号或减号则是两个文件都有的内容,带加号或减号的是文件所特有的,加代表工作区里的code.txt,减代表HEAD版本的code.txt)
  • git diff HEAD HEAD^ -- code.txt #对比两个版本间某个文件不同
  • rm code.txt #删除文件
    • #若想丢弃改动 git checkout -- <文件>
    • #若想在暂存区删除的文件再回来,先取消暂存,再checkout
  • git log --pretty=oneline #以简短形式显示已创建版本记录
  • git branch #查看有几个分支
  • git checkout -b dev # 创建并切换到dev分支(带*表示你所在分支的位置)
  • git checkout master #切换分支(master是你要切换到的分支名字)
  • git merge dev #合并分支
    • (将要合并的分支合并到当前分支,这种合并叫快速合并,直接把指针往前一挪)
  • git branch -d dev #删除分支
  • git branch <分支名字> #创建一个分支,不切换。
  • git log --graph --pretty=oneline #可以查看分支提交的情况(图)
  • git merge --no-ff -m '禁用 fast-foruard' dev #禁止快速合并,重新做一次新的提交
  • git stash #保存
  • git stash list #列出保存的工作现场
  • git stash pop #恢复工作现场

四、分支管理:

分支是什么呢?就好比工厂里的流水线一样,HEAD先指向分支,分支再指向版本,默认有一个master分支。

五、git 要点小记:

  • 每次更改后的版本只是在原版本上添加了新增的内容,新版本中只有新增内容。
  • 工作区:电脑中的目录,比如git_test,就是一个工作区,也就是你git init的那个目录。
  • .git :工作区有一个隐藏目录.git,这个是git的版本库,git 的版本库里存有很多东西,其中最重要的是stage(或叫index)的暂存区
  • 编辑文件都是在工作区,git add 是把在工作区的修改放到暂存区,git commit 是把暂存区的修改一次性做一次版本记录。
  • 起冲突:两个分支都有了新的提交记录,并且修改的是同一个文件。
  • bug分支:修复bug时,要禁止快速合并

六、终端如何生成github上的ssh公钥,gitlab通用(在家目录下操作)

 可看到被保存到的路径,所以cd到.ssh/ 下

id_rsa是私钥,id_rsa.pub是公钥,cat一下复制公钥加入github的key中,title的名字可以自己起,如“xiaoxiao",最后点击Add SSH Key,大功告成。

七、克隆项目

  • git clone 复制地址 #克隆项目
  • git push origin 分支名称 #推送分支
  • git branch --set-upstream-to=origin/smart smart #本地的smart分支跟踪远程的smater分支
  • git pull origin 分支名称 #从远程分支上拉取代码

八、不小心commit后如何撤销

git log #查看自己的commit记录
git reset --soft HEAD^ #撤销commit记录
git log #已经没有commit记录了

九、多次commit如何合并成一个commit

  • GIT有多个commit时,需要先进行git log
  • 查看历史commit记录
  • 回到要合并的commitID的上一个commitID 
    • 即复制粘贴commitID
    • git rebase -I commitID
    • 最上面的是最早提交的版本记录,所以将要合并的版本记录改为s,要合并到哪个版本的版本记录不变为pick
  • 同理,最上面的logo_upload为最早的commit -m,将要的留下,不要的commit -m与#...都删除
  • git push -f
  • 成功记录如下:
  • 综上所述,最妙的办法是杜绝这么多个commit的发生,可以使用git commit --amend

git版本管理,有这一篇就够了(后端开发人员必备技能)相关推荐

  1. 五⼤场景玩转 Git,只要这一篇就够了!

    推荐阅读: 编程神器 VS Code,只要这一篇就够了! 自由软件江湖里的码头和规矩 自己动手写一个操作系统内核[内含视频] 在浏览器中输入网址按回车后发生了什么? 智能制造:从信息化到智能化 一文透 ...

  2. Git 教程看这一篇就够了

    基础杂项 Git基础概念 * 客户端并不只是提取最新版本的文件快照,而是把代码仓库完整的镜像下来 * git核心本质上是一个键值对数据库.可以向该数据库插入任意类型的内容,他会返回一个键值,通过该值可 ...

  3. ❤️开发项目必备技能《Git用法集合》建议收藏❤️

    Git用法集合 目录: 文章目录 Git用法集合 目录: 1.什么是版本控制 2.常见的版本控制工具 3.版本控制分类 4.Git与SVN的主要区别 5.软件下载 6.启动Git 7.常用的Linux ...

  4. Idea 中的 Git 操作看这一篇就够了(最全的讲解,文章比较长,截图比较多是为了说明问题)

    环境部分略过 从0开始创建一个项目,用来讲解git,会包括创建远程新分支,回滚等操作. 在每一个讲解过程中都会有问题提问 基础部分讲解 实战高级部分 基础部分内容 如果在github上已有仓库    ...

  5. git命令看一这篇就够了

    git最最基本命令(怎么克隆.上传) #(将远程仓库的代码克隆到本地) git clone + 远程仓库地址 #(将工作区的改动添加到暂存区) git add . #(将暂存区的文件提交到本地库) g ...

  6. Flink框架吐血总结,学习与面试收藏这一篇就够了,大数据必备知识体系

    文章目录 Flink Flink 核心特点 Flink 应用 核心抽象 环境对象 数据流元素 Flink 异步IO 数据分区 窗口 实现原理 Watermark (水印) 内存管理 自主内存管理 内存 ...

  7. Cookie、Session、Token、JWT 看一篇就够了

    目录 Cookie.Session.Token.JWT 看一篇就够了 什么是认证(Authentication) 什么是授权(Authorization) 什么是凭证(Credentials) 怎么让 ...

  8. Spring入门,看这篇就够了

    Spring入门,看这篇就够了 文章目录 Spring入门,看这篇就够了 一. 初识Spring 二.Spring Framework系统架构 三.核心概念 1.IoC(inversion of co ...

  9. 【java面试】6万字最全Java知识体系梳理,还在找面试题?看这篇就够啦

    文章目录 一.基础 1.1JVM 1.JVM五大内存区域 2.新生代和老年代 3.加载类的过程 4.OOM 5.JVM调优 1.2 GC 1.可达性分析 2.java中的引用 3.GC回收算法 4.G ...

最新文章

  1. win10 rabbitMQ的安装与测试
  2. Java虚拟机笔记(一):类加载机制
  3. HEVC视频编码技术
  4. ABAP 后台作业的一个状态查询工具
  5. c语言获取dll文件路径,C语言URLDownloadToFile获取文件下载进度
  6. easyui 修改单元格内容_jquery easyui datagrid实现增加,修改,删除方法总结
  7. 机器学习 Machine Learning中正则化的学习笔记~
  8. Linux下使用ffmpeg对视频截图
  9. html输入公式得到混合运算结果,EXCEL公式与函数教案
  10. 企业微信聊天记录如何转移到新手机上?
  11. 【腾讯TMQ】远程移动测试平台对比分析
  12. 操作系统动态分区分配方式C/C++语言(首次适应算法(FF)循环首次适应算法(NF)最best适应算法(BF)最坏适应算法(WF))
  13. 【读书】少有人走的路---自律(斯科特 派克)
  14. GEE学习笔记 五十四:QGIS展示3D的高程数据
  15. 数据库中的三种完整性:域、实体、参照完整性
  16. Unity小技巧——音频文件间断问题
  17. 【242期推荐】女程序员苛刻的征婚条件,男程序员不能输
  18. 读书笔记-独立女性有的良性焦虑
  19. android studio3.0——Error:All flavors must now belong to a named flavor dimension. Learn more at ...
  20. python 公司年会抽奖_公司年会抽奖程序-python

热门文章

  1. vb python excel_【Python3+VBA】在Excel中生成小姐姐
  2. 商学院·基础----02 不要为打翻的牛奶哭泣(沉没成本)
  3. 基于python网络爬虫天气_Python网络爬虫之中国天气网
  4. Python 基于sicpy求解定积分 ,不定积分以及多重积分
  5. csrf漏洞防御方案_CSRF原理实战及防御手段
  6. App 抓包利器:Charles 以及 App 爬虫心得
  7. 【目标检测-YOLO】YOLOv5-yolov5s TensorRT部署准备之ONNX导出(第一篇)
  8. python面向对象爬取某鱼颜值区主播图片
  9. 数据治理的数据流程整合
  10. 重装系统服务器不识别u盘,电脑使用u盘重装系统无法识别怎么办?