Diff and Patch

Diff and Patch

Git diff

通过 git diff 打 Patch

git diff 生成的补丁是展示当前工作目录中的修改(或者两个不同的提交之间的修改),而 git format-patch 通常用来生成提交历史的补丁。

1. 生成当前未提交的更改的补丁

# 这个命令会生成一个名为 changes.patch 的文件,文件中包含了当前工作目录中的所有未提交的更改(与最新提交的差异)。
git diff > changes.patch

2. 生成两个提交之间的补丁

# 这个命令会生成两个提交之间的差异补丁文件。commit1:旧版本,commmit2:新版本
git diff <commit1> <commit2> > changes.patch

3. 生成特定文件的补丁

git diff <commit1> <commit2> path/to/file > file-changes.patch

4. 打 Patch

git apply --stat 0001-limit-log-function.patch  # 查看patch的情况
git apply --check 0001-limit-log-function.patch # 检查patch是否能够打上,如果没有任何输出,则说明无冲突,可以打上

Git diff:索引区【暂存区】(--) VS 工作区(++)

Git diff --cached:索引区 VS 代码仓库【注意:git add. 将修改添加到索引区里面去】

git cat-file -p 是一个 Git 命令,用于查看 Git 对象的内容。Git 对象可以是提交(commit)、树(tree)、标签(tag)、或 blob(文件)。这个命令非常有用,特别是在需要检查 Git 仓库中的具体对象内容时。

# <object> 可以是对象的哈希值、分支名、标签名、或其他可以解析为对象的引用。
# -p:表示“pretty-print”,用于以人类可读的格式输出对象内容。
git cat-file -p <object>

Demo:
查看某次提交的详细信息:

# 这个命令将会输出该提交的父提交、作者、提交时间、提交消息等详细信息。
git cat-file -p <commit_hash>

查看某个树对象的内容:

# 将会输出该树对象中的文件和目录结构。
git cat-file -p <tree_hash>

查看一个文件对象(blob)的内容:

# 将会输出该文件的内容。
git cat-file -p <blob_hash>

查看某个标签对象的内容:

# 将会输出该标签的具体信息,比如标签作者、标签创建时间等。
git cat-file -p <tag_name>

--:索引区
++:工作区

git patch & apply

# 对最近一次提交打 patch
git format-patch -1
# 切换到其它分支,然后打 patch,这样并没有提交,要进行 commit
git branch dev
git checkout dev
git apply patch 文件
# git am 不仅会应用补丁,还会基于补丁文件中的提交信息创建一个新的提交。这在应用来自其他开发者的补丁时非常有用。
git am <patch-file>

posted @ 2024-08-14 00:53  爱新觉罗LQ  阅读(54)  评论(0编辑  收藏  举报