0


git 两个分支对比以及合并

git 两个分支对比以及合并

git 两个分支对比以及合并

git diff

不加参数即默认比较工作区与暂存区。

git diff

命令在生成和应用补丁方面扮演着重要的角色。‌它允许开发者查看代码的差异,‌并且能够生成补丁文件,‌这些补丁文件包含了代码修改的差异部分,‌不包含任何文件的完整内容。‌

显示两个分支提示之间的差异

git branch -vagitdiff branch_1 branch_2    

显示两个分支提示之间的差异,包括内容更改

--name-only

仅在提交信息后显示已修改的文件清单。

--name-status

显示新增、修改、删除的文件清单, 对变化的文件名和变化的状态进行打印。

–diff-filter=[(A|C|D|M|R|T|U|X|B)…[*]]仅选择已添加 (A)、已复制 (C)、已删除 (D)、已修改 (M)、重命名 (R)、类型(即常规文件、符号链接、子模块等)已更改 (T)、未合并 (U)、未知 (X) 或配对已中断 (B) 的文件。可以使用筛选器字符的任意组合(包括无字符)。将 *(全部或无)添加到组合中时,如果有任何文件与比较中的其他条件匹配,则选择所有路径;如果没有与其他条件匹配的文件,则不会选择任何内容。

此外,这些大写字母可以小写以排除。例如,

–diff-filter=ad

排除添加和删除的路径。

使用图形化工具,如pycharm

本地分支和某个远端分支对比:

  • 绿色:本地分支多出来的文件
  • 蓝色:差异的文件
  • 灰色:目标分支有,本地分支没有的文件

在源码文件或目录上,右键,如下图选择某个分支要和你当前分支进行对比:
在这里插入图片描述

打补丁的一般流程

Git 提供了两种补丁方案,

  • 一是用git diff生成的UNIX标准补丁.diff文件,
  • 二是git format-patch生成的Git专用.patch 文件。
.diff

文件只是记录文件改变的内容,不带有

commit

记录信息,多个commit可以合并成一个diff文件。

.patch

文件带有记录文件改变的内容,也带有

commit

记录信息,每个commit对应一个patch文件。

gitdiff commit_id1 commit_id2 > test.patch 
git diff commit_id

会生成最后一次提交到目前修改过的内容补丁

gitdiff commit_id1 commit_id2 

会生成两次提交之间修改过的内容补丁

diff命令:生成补丁包文件

生成补丁是 Git 中一个非常有用的功能,可以将代码进行修改后生成的差异文件。使用 Git 的 diff 命令可以生成补丁文件,供其他开发者进行代码修改或者合并操作。

当diff比较新旧两个文件的差异后,将比较结果保存到patch文件里,然后使用patch命令利用补丁文件升级旧文件(打补丁),或把新文件回退成旧文件(卸载补丁)

patch命令:打补丁命令

TODO

Git Merge 与 Rebase

Git中Merge和Rebase是整合分支的常用方法。Merge保留完整历史记录,但可能产生复杂历史;Rebase创建干净线性历史,但改变提交哈希。

如果你想要保留完整的历史记录,包括所有的分支点和合并点,那么Merge是一个好选择。

个人使用习惯总结: 在main上只用merge,在自己的feature上优先使用rebase拉取main上最新代码。

[重要]使用 merge 命令来进行分支合并

使用 merge 命令来进行分支合并是 Git 中最重要的操作之一。

这种合并是将两个分支的历史合并到一起,现有的分支并不会被更改,它会比对双方不同的文件缓存下来,生成一个commit,去push

  • 优点: 安全,现有分支不会被修改
  • 缺点: 或多或少都会污染一点分支历史,在回看项目时会增加理解项目历史的难度
  • 用处: 一般用于公共master主分支

当你想要将一个分支的更改整合到另一个分支时,可以使用Merge。

假设你有一个主分支main和一个功能分支feature,你想将feature分支的更改合并到main分支。

  1. 切换到main分支:
git checkout main
  1. 使用git merge命令合并feature分支:
git merge feature

合并操作可以通过reset 命令来取消

git reset --merge

rebase 命令使用

Rebase是另一种整合分支的方法,它会将当前分支的更改“重新播放”在另一个分支的顶部。这意味着它会创建一个新的更改序列。

使用场景

  • 当你想要一个干净、线性的项目历史时。
  • 在将功能分支合并到主分支之前,确保功能分支的更新

如果你想用rebase将feature分支的更改整合到main分支。

  1. 切换到feature分支:
git checkout feature
  1. 使用git rebase命令将feature分支变基到main分支:
git rebase main

解决可能出现的冲突,并继续变基过程。

  1. 最后,切换到main分支,并使用git merge将变基后的feature分支合并进来
标签: git merge rebase

本文转载自: https://blog.csdn.net/inthat/article/details/141133489
版权归原作者 西京刀客 所有, 如有侵权,请联系我们删除。

“git 两个分支对比以及合并”的评论:

还没有评论