IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> git命令使用指南 -> 正文阅读

[开发工具]git命令使用指南

概念篇

基础篇

1.提交命令

git commit :暂存仓库(索引仓库)提交到本地仓库的命令

2.合并命令

2.1 创建切换分支

  • git branch <分支名> : 创建分支
  • git checkout <分支名> : 切换到分支
  • git checkout -b <分支名> :创建新的节点并切换到新的节点
  • 使用~^使HEAD进行快速移动
    • ~选择第几代

    • ^选择哪个父记录

之后git commit时就是提交到分支,如果没有切换分支,就会在master上提交,mater节点就会变成刚刚提交的

2.2 合并分支(merge)

  • 场景:当有两个分支时,都是不同的修改内容,此时需要进行合并修改。
  • git merge <branchname>:将当前分支合并到branchname
  1. 创建分支并切换提交到新的分支上,

git checkout -b bugFix
git commit

  1. 切换回原来的分支并进行提交

git checkout master
git commit

  1. 合并分支

git merge bugFix

2.3 合并分支(rebase)

  • 场景:新建的分支经过复制再进行提交,好处是版本提交历史更加清楚
  • git rebase<branchname>:将当前分支进行复制并合并到branchname
  • 多次rebase使提交记录有序时:从最后一个提交记录开始rebase
  1. 新建分支并提交

git checkout -b bugFix
git commit

  1. 切换回master分支并提交

git checkout master
git commit

  1. 使用rebase命令对“bugFix”进行复制并合并到master

git rebase bugFix

高级篇

3.分离HEAD(项目树上的前后移动)

  • 场景:HEAD默认指向分支名,我们使用checkout的命令使HEAD指向某个提交记录

查看HEAD指向:cat .git/HEAD
HEAD指向一个引用,使用如下命令查看它的指向:git symbolic-ref HEAD

  1. 切换到某个分支名,并进行checkout某个提交记录

假如现在有一个“bugFix分支,下面有一个叫c4的提交记录”
git checkout c4

4.相对引用

  • 场景:相对引用的出现是针对HEAD指向。当真实项目出现的某个提交记录是hash值,hash值过于长。

4.1 相对引用(^ & ~)

  • 解决方案:
    • 我们只需要输入hash值的前几位就可以。

    使用 git checkout <分支名>^ 进行向上的移动
    使用 git checkout HEAD^ 进行向上的移动
    使用 git checkout HEAD^^^ 进行向上的三次移动
    使用git checkout HEAD ~3 进行向上的三次移动

5.强制分支移动 -f

  • 命令解读:git branch -f master HEAD~3
    • 让master强制指向HEAD向上移动3的位置(分支名同理)

6.撤销变更

撤销变更由底层部分(暂存区的独立文件或者片段)和上层部分(变更到底是通过哪种方式被撤销的)组成。

6.1 变更一:git reset

通过把分支记录回退几个提交记录来实现撤销改动。你可以将这想象成“改写历史”。git reset向上移动分支,原来指向的提交记录就跟从来没有提交过一样。
虽然在你的本地分支中使用 git reset 很方便,但是这种“改写历史”的方法对大家一起使用的远程分支是无效的哦!为了撤销更改并分享给别人,我们需要使用 git revert。
命令:

git reset <branch or hash or HEAD>~1:回退1步;

6.2 变更二:git revert

在我们要撤销的提交记录后面居然多了一个新提交!这是因为新提交记录 C2’ 引入了更改 —— 这些更改刚好是用来撤销 C2 这个提交的。也就是说 C2’ 的状态与 C1 是相同的
命令:

git revert <branch or hash or HEAD>

移动提交记录

7.整理提交记录

有计划的提交。

7.1 Git Cherry-pick

命令:

git cherry-pick <hash> : 可以将提交树上任何地方的提交记录取过来追加到 HEAD 上。
注: 只适用于知道hash名

7.2 可交互式的rebase

使用带参数 –interactive 的 rebase 命令, 简写为 -i。如果你在命令后增加了这个选项, Git 会打开一个 UI 界面并列出将要被复制到目标分支的备选提交记录它还会显示每个提交记录的哈希值和提交说明,提交说明有助于你理解这个提交进行了哪些更改。在实际使用时,所谓的 UI 窗口一般会在文本编辑器 —— 如 Vim —— 中打开一个文件。
命令:

git rebase -i HEAD~3对向上三个提交记录进行交互

提交技巧

8.提交技巧

背景: 我们提交了多次记录,如c2,c3。此时我们想修改c2。c3保持不变。
解决:
方案一: 使用 rebase -i将需要修改记录提出来,对c2进行分离:使用git commit --amend,之后再使用rebase -i进行排序。
方案二: 使用git commit --amend 对c2进行分离,再使用git cherry-pick c2' c3进行分支合并。

9.永久标记(标签)

背景:分支会移动,使用git tag <tag name><branch> 可以永久标记。当有重大版本时可以进行使用。此时HEAD转变成分离状态,不能直接commit。

10.锚点

由于标签在代码库中起着“锚点”的作用,Git 还为此专门设计了一个命令用来描述离你最近的锚点(也就是标签),它就是 git describe!
Git Describe 能帮你在提交历史中移动了多次以后找到方向;当你用 git bisect(一个查找产生 Bug 的提交记录的指令)找到某个提交记录时,或者是当你坐在你那刚刚度假回来的同事的电脑前时, 可能会用到这个命令。

命令git describe <ref>
<ref> 可以是任何能被 Git 识别成提交记录的引用,如果你没有指定的话,Git 会以你目前所检出的位置(HEAD)。

输出结果<tag>_<numCommits>_g<hash>
tag 表示的是离 ref 最近的标签numCommits 是表示这个 ref 与 tag 相差有多少个提交记录hash 表示的是你所给定的 ref 所表示的提交记录哈希值的前几位
当 ref 提交记录上有某个标签时,则只输出标签名称

命令解析:git describe master输出离master最近的标签和步数、hash。
输出解析v0_2_gc2v0为最近的标签,2为与master相差的记录数,hash为最近标签的hash值前几位。

远程命令

11.远程仓库

git clone 命令在真实的环境下的作用是在本地创建一个远程仓库的拷贝(比如从 github.com)。

12.远程分支

在我们的本地仓库多了一个名为 o/master 的分支, 这种类型的分支就叫远程分支。由于远程分支的特性导致其拥有一些特殊属性。远程分支反映了远程仓库(在你上次和它通信时)的状态。这会有助于你理解本地的工作与公共工作的差别 —— 这是你与别人分享工作成果前至关重要的一步。
远程分支有一个特别的属性,在你检出时自动进入分离 HEAD 状态。Git 这么做是出于不能直接在这些分支上进行操作的原因, 你必须在**别的地方(本地仓库)**完成你的工作。更新了远程分支之后)再用远程分享你的工作成果。
<remote name>/<branch name>:远程仓库默认为 origin,简写为 o 。

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 16:35:43  更:2022-03-03 16:35:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:28:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码