git不同分支同步代码,diff打patch补丁
背景介绍
一个代码管理者,不可避免的就是要将别人修改的代码同步到其他分支或其他仓库分支,因为不是所有人都有权限去合并的。
合并代码有很多方式,比如 直接文件夹覆盖、文件覆盖等。
但上面的方法,繁琐还容易出错。
写shell 脚本也可以实现。
这里主要想说,可以把内核打补丁的方法,运用到这里。
git 提供一个命令:
git diff
说明:
workspace:工作区
staging area:暂存区/缓存区/索引区
local repository:版本库或本地仓库
remote repository:远程仓库
一、git diff 方式:
1.工作区的改动补丁patch
状态:修改了文件,没有执行 git add
git diff his/2.txt
2.暂存区的改动补丁patch
状态:已经执行 git add ,但没有执行 git commit
git diff --cached > test.patch
3.两个分支之前改动 patch
状态:分支1:master ;分支二:dev
dev 里修改了文件,想要同步到 master
git diff master dev
注意:把哪个分支写在前面就是以谁为基准,此时以 master 为基准,就是要将 dev 里多出的内容合并到 master 里
4.显示暂存区(索引区)和最后一次commit(HEAD)之间的文件更改:
即显示已add但还未commit的文件变更。也即用"git commit"(不带-a)将被提交的文件变更。
git diff --cached
或
git diff --staged
5. 显示工作目录与最后一次commit之间的文件变更:
即显示所有未commit(包括未add和add两类)的文件变更。也即用"git commit -a”将被提交的文件变更。
git diff HEAD
6.git log 查看那些是需要打ptach的
状态:分支1:master ;分支二:dev
dev 里修改了文件,想要同步到 master
git diff commit_id1 commit_id2 > test.patch
commit_id1是最后1次id commit_id2 是倒数第二次提交的id ,这里是举例打1次提交的patch 当然也可以使用就一个id 就是倒数第二次的id,多个提交的话需要注意 id 即可
7.查看patch
git apply --check test.patch
8.使用(导入) patch(补丁)
git apply test.patch
二、git format-patch
1、已经提交的代码
git format-patch commit_id1 commit_id2
(当然可可以使用git format-patch -1 这里是最近1次提交的,-2 是2次,-3 是三次 )
六、git diff 与 git format-patch 的区别
git diff:生成的可以指定文件名 生成的内容不包含commit 添加的内容
git format-patch: 无需指定文件名, 生成的内容,含提交的变化的文件,已经commit 内容
八、
参考、来源:
https://blog.csdn.net/nq1737274479/article/details/131052582
https://blog.csdn.net/qq_33210042/article/details/128097580
https://blog.csdn.net/weixin_39060517/article/details/125554797