Git版本管理(02)patch操作和分支操作整理

1 git patch操作

1.1 git diff比较

使用git diff用于显示当前工作区与暂存区或提交历史之间的差异,如果使用它生成patch,则需要使用git apply命令来引入patch

1.2 git patch打包

使用git format-patch生成patch

bash 复制代码
# 打包最近的一个patch:
$git format-patch HEAD^
# 打包最近的两个patch
$git format-patch HEAD^^
# 打包最近的三个patch
$git format-patch HEAD^^^
# 打包最近的n个patch
$git format-patch -n
# 打包版本n1与n2之间的patch
$git format-patch -n1 -n2
# 某次提交以后的所有patch,不包含此次提交,两者等价
$ git format-patch -s 5d7c81a2b
$ git format-patch 5d7c81a2b

打包好后会生成0001-XXX.patch 这样格式的patch,使用git am(自动提交) /git apply 来merge patch即可。

1.3 git diff和git format-patch的区别

git diff和git format-patch是Git中用于生成补丁和差异的命令,它们之间的主要区别如下:

  • git diff:git diff命令用于显示当前工作区与暂存区或提交历史之间的差异。可以显示文件的修改内容,包括添加、删除和修改的行。可以使用不同的选项和参数来控制差异的显示方式,比如显示具体的文件差异、忽略空白字符等。git diff通常用于查看尚未暂存或提交的更改,以帮助你了解当前工作区的状态和修改内容。
  • git format-patch:git format-patch命令用于生成补丁文件(patch files),它将一系列提交转换为可应用的补丁文件。git format-patch会为每个提交创建一个单独的补丁文件,每个补丁文件包含了该提交的所有修改内容。生成的补丁文件一般以.patch扩展名结尾,可以通过邮件或其他方式传递给他人,以便他们应用这些补丁到他们的代码库中。补丁文件包含了修改的具体内容,包括添加、删除和修改的行,以及与之相关的提交信息。git format-patch命令可以使用不同的选项和参数来控制生成补丁文件的方式,比如指定要处理的提交范围、生成多个补丁文件等。

总结来说:git diff用于显示当前工作区与暂存区或提交历史之间的差异,用于查看尚未暂存或提交的更改。git format-patch用于将提交转换为补丁文件,每个补丁文件包含了一个提交的所有修改内容,用于传递和应用补丁。这两个命令在不同的场景下有不同的用途,根据你的需求选择适合的命令来查看差异或生成补丁。

2 git分支操作

2.1 基本操作

bash 复制代码
2.1 基本操作
# 在master分支下保证当前代码与线上同步。
$git pull origin master 
# 查看远程分支
$git branch -r
# 查看本地和远程的所有分支
$git branch -a

2.2 新建 / 切换分支

bash 复制代码
#新建分支
$git branch <分支名> 
#切换到新建的分支
$git checkout/switch <分支名> 
#优化操作,创建分支的同时再切换到该分支
$git checkout -b <分支名> 

2.3 提交分支到远端

bash 复制代码
# 把本地分支推到远端,让远端也有一个你的分支,用来后面提交你的代码
$git push origin <分支名> 

2.4 合并分支

bash 复制代码
# 合并分支,在当前分支下将 <分支>合并到当前分支,合并冲突后手动解决冲突
# 解决后使用git commit -m "Merge branchname into current branch"来完成了分支的合并操作
# 如果有冲突则需要先解决冲突再最后提交,其中
# 介于 <<<<<<<HEAD 和 ======= 之间的内容是代码块1中内容,
# 介于 ======= 和 >>>>>>> 之间的内容是代码块2中内容。
$git merge <分支名>

2.5 删除分支

bash 复制代码
# 删除分支,注意,只有当该分支的修改已经合并到其他分支时,才能被安全地删除。如果分支的修改尚未合并,可以使用强制删除的命令
git branch -d <分支名>  
# 分支的修改尚未合并,强制删除分支
git branch -D <分支名>   

2.6 重命名本地分支

bash 复制代码
$git branch -m <oldbranch> <newbranch>
相关推荐
爱学英语的程序员22 分钟前
让AI 帮我做了个个人博客(附提示词!)
人工智能·git·vue·github·node·个人博客
liu****1 小时前
git工具
git·python·算法·机器学习·计算机基础
wxr06162 小时前
git无法克隆
git
cooldream20094 小时前
Git 拒绝推送(Push Rejected)问题全解析与解决方案实战指南
git
wxr06164 小时前
GIT无法push
git·gitee
装不满的克莱因瓶6 小时前
【踩坑】IDEA提交Git .gitignore忽略文件不起作用
java·git·.gitignore·踩坑
cos16 小时前
Fork 主题如何更新?基于 Ink 构建主题更新 CLI 工具
前端·javascript·git
OpenMiniServer17 小时前
当 AI 成为 Git 里的一个“人”
人工智能·git
Carry34519 小时前
不清楚的 .gitignore
前端·git
番茄灭世神1 天前
Git入门使用学习
git·gitee·软件工程·计算机专业入门