0
点赞
收藏
分享

微信扫一扫

使用 git 创建补丁和打补丁。

流计算Alink 2022-03-12 阅读 138
gitgithub

首先说一下 git diff

git diff 比较的方式比较多样,git diff 使用不同的格式 可以在工作区,暂存区,以及仓库各个版本的任意两者进行比较。将比较的结果重定向到patch 文件,即可用 patch 指令,或者其他的命令打进这个patch。

git diff > diff.patch

显示工作区与当前分支之间的差异。但是这个指令有一个问题,就是无法显示出 Untracked files ,所以用这个命令生成的patch就无法添加 untracked files 。

git diff  --cached > diff.patch
或者
git diff  --stage > diff.patch

显示暂存区与当前分支之间的差异,这个指令就可以对新增加的文件进行添加,前提是需要先 git add 将需要增加的文件,添加到暂存区。

git diff --cached/--staged/commit  commit > diff.patch

比较暂存区/给定提交 ID 与 给定提交ID的 (省略后面的commit就是与当前分支) 的差异。

其次 git format-patch

git am + patch_file 是专门用于git format-patch 所生成的补丁,使用git am + patch_file会自动commit 并根据patch生成提交记录。

git format-patch -n 

生成 n 次提交的补丁文件。

打补丁,git patch ,git apply ,git am

git diff 和 git format-patch 生成的补丁文件都可以使用git patch ,git apply来打补丁,但是 git am 仅可以用于git format-patch 生成的补丁。

git patch -p1 < patch_files
或者直接使用
git apply patch_files

注意,在执行 patch 命令时,指定-p1,当 位置是在哪里制作的patch,就在哪里执行patch 或者 apply。

git am  patch_files

同理am 命令也需要在制作补丁的位置执行命令。

举报

相关推荐

0 条评论