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命令日常总结

Git 的工作区域和流程

要想弄懂 Git 是怎么对我们的代码进行管理的,那首当其冲的是了解 Git 的工作区域是如何构成的。因为,只有彻底弄懂了 Git 工作区域的构成,你才可以在适当的区域使用合适的命令。如下图所示,此图包含了 Git 的4个工作区和一些常见的操作。

在这里插入图片描述

Workspace:工作区,就是平时进行开发改动的地方,是当前看到最新的内容,在开发的过程也就是对工作区的操作

Index:暂存区,当执行 git add 的命令后,工作区的文件就会被移入暂存区,暂存区标记了当前工作区中那些内容是被 Git 管理的,当完成某个需求或者功能后需要提交代码,第一步就是通过 git add 先提交到暂存区。

Repository:本地仓库,位于自己的电脑上,通过 git commit 提交暂存区的内容,会进入本地仓库。

Remote:远程仓库,用来托管代码的服务器,远程仓库的内容能够被分布在多个地点的处于协作关系的本地仓库修改,本地仓库修改完代码后通过 git push 命令同步代码到远程仓库。

一般来说,Git 的工作流程分为以下几步

1.在工作区开发,添加,修改文件。
2.将修改后的文件放入暂存区。
3.将暂存区域的文件提交到本地仓库。
4.将本地仓库的修改推送到远程仓库。

Git 基本操作

git add

添加文件到暂存区

# 添加某个文件到暂存区,后面可以跟多个文件,以空格区分
git add xxx

# 添加当前更改的所有文件到暂存区。
git add .

git commit

# 提交暂存的更改,会新开编辑器进行编辑
git commit 

# 提交暂存的更改,并记录下备注
git commit -m "you message"

# 等同于 git add . && git commit -m
git commit -am

# 对最近一次的提交的信息进行修改,此操作会修改commit的hash值
git commit --amend

git pull

# 从远程仓库拉取代码并合并到本地,可简写为 git pull 等同于 git fetch && git merge 
git pull <远程主机名> <远程分支名>:<本地分支名>

# 使用rebase的模式进行合并
git pull --rebase <远程主机名> <远程分支名>:<本地分支名>

git fetch

git pull 不同的是 git fetch 操作仅仅只会拉取远程的更改,不会自动进行 merge 操作。对你当前的代码没有影响

# 获取远程仓库特定分支的更新
git fetch <远程主机名> <分支名>

# 获取远程仓库所有分支的更新
git fetch --all

git branch

# 新建本地分支,但不切换
git branch <branch-name> 

# 查看本地分支
git branch

# 查看远程分支
git branch -r

# 查看本地和远程分支
git branch -a

# 删除本地分支
git branch -D <branch-nane>

# 重新命名分支
git branch -m <old-branch-name> <new-branch-name>

git stash

# 备份当前的工作区的内容,从最近的一次提交中读取相关内容
git stash

# 自定义命名暂存文件的名称
git stash save "message" 

# 打印当前的Git栈信息
git stash list

# 取出指定版本号
git stash apply stash@{x}

# 清空Git栈
git stash clear

# 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容
git stash pop

# 删除指定编号的stash
git stash drop stash@{x}  

git reset

# 不删除工作空间改动代码,撤销commit,并且撤销git add .
git reset HEAD^

# 不删除工作空间改动代码,撤销commit,不撤销git add . 
git reset --soft HEAD^ 

# 删除工作空间改动代码,撤销commit,撤销git add . 
git reset --hard HEAD^

工作中使用 Git 解决问题的场景

git rebase 让你的提交记录更加清晰可读

git rebase 的使用

rebase 翻译为变基,他的作用和 merge 很相似,用于把一个分支的修改合并到当前分支上。

如下图所示,下图介绍了经过 rebase 后提交历史的变化情况。

在这里插入图片描述

举一个实际的例子来解释一下上面的过程。

假如我们现在有1个feature分支,在此分支上新切一个rebase/dev分支,然后feature分支增加c.ts,d.ts两个文件,分别进行了2次提交;rebase/dev分支增加a.ts, b.ts两个文件,也分别进行了2次提交;

此时,两个分支的提交记录如下:

feature分支如下图:
在这里插入图片描述

rebase/dev分支如下图:
在这里插入图片描述

接着在rebase/dev分支上,执行 git rebase feature操作,然后提交;我们在SourceTree上看一下最终合并图表

在这里插入图片描述

如上图所示,提交记录没有交叉,非常清晰,上面演示是比较顺利的情况,但是大部分情况下,rebase 的过程中会产生冲突的,此时就需要手动解决冲突,然后依次使用 git addgit rebase --continue 的方式来处理冲突,完成 rebase 操作过程; 如果不想要某次 rebase 的结果,那么需要使用 git rebase --skip 来跳过这次 rebase 操作。

git merge 使用

不同于 git rebase 的是,git merge 在不是fast-forward (快速合并) 的情况下, 会产生一条额外的合并记录,类似 Merge branch 'xxx' into 'xxx' 的一条提交信息。

在这里插入图片描述

按照 git rebase 的方式,也列举一下实际的例子进行演示:

假如我们现在有1个feature分支,在此分支上新切一个merge/dev分支,然后feature分支增加c.ts,d.ts两个文件,分别进行了2次提交;merge/dev分支增加a.ts, b.ts两个文件,也分别进行了2次提交;

此时,两个分支的提交记录如下:

feature分支如下图:

在这里插入图片描述

merge/dev分支如下图:
在这里插入图片描述

接着在merge/dev分支上,执行 git merge feature 操作,然后提交;我们在SourceTree上看一下最终合并图表

在这里插入图片描述

如上图所示,提交记录是有交叉的,并且会将 merge/dev 和 feature 分支最新一次提交合并后生成一个新的commit,有冲突的话需要先解决冲突,在merge过程中,也可以使用 git merge --abort 来取消本次merge;

总结一下 git rebasegit merge 区别

  • git rebase操作实际上是将当前执行rebase分支的所有基于原分支提交点之后的commit打散成一个一个的patch,并重新生成一个新的commit hash值,再次基于原分支目前最新的commit点上进行提交,并不根据两个分支上实际的每次提交的时间点排序,rebase完成后,切到基分支进行合并另一个分支时也不会生成一个新的commit点,可以保持整个分支树的完美线性

  • git merge 操作合并分支会让两个分支的每一次提交都按照提交时间(并不是push时间)排序,并且会将两个分支的最新一次 commit 点进行合并成一个新的commit, 最终分支数呈现非整条线性直线的形式

简书参考

掘金参考

  开发工具 最新文章
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-09-21 00:48:32  更:2022-09-21 00:50:14 
 
开发: 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年12日历 -2024/12/28 18:40:43-

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