从 Git 项目中生成补丁文件而无需提交

4

我正在使用git进行一个开源项目的工作。

我对源代码进行了一些修改(修改现有文件、添加新文件、删除现有文件),并希望生成一个补丁文件而不需要提交。如何做到这一点?


2
你知道提交是本地的,对吧?为什么不在新分支中进行提交以生成补丁呢? - madth3
如果您尚未将其添加到暂存区,即未执行git add命令,则git diff将以补丁的形式显示差异。 - another.anon.coward
我想在不对项目进行提交的情况下生成补丁文件。'git diff' 不会显示我添加到项目中的新文件。 - MOHAMED
3个回答

5

对于项目中新增的文件:

git add -N <path of the new file>

然后生成补丁:
git diff > patch

4

很多人并不知道,或者可能它在SO上没有被广泛使用作为解决方案,但是 git diff 的输出是一个有效的补丁格式,可以通过管道传递给 git apply。因此,假设您有一个未暂存的更改要用于生成补丁:

git diff -- <file> > ~/mypatch ;# redirect diff output to ~/mypatch

然后在另一个代码库中:

git apply < ~/mypatch

假设您有一个全新的文件,它尚未被跟踪。您仍然可以使用git diff命令,并指定--no-index标志,将该文件与/dev/null进行比较:
git diff --no-index /dev/null <file> ~/mypatch

然后以同样的方式应用它。

这个答案主要是展示git可以做什么。我想不出任何实际的理由不在新分支上(通过Adam Dymitruk的答案)或在你正在使用的主分支上(根据madth3的评论)本地提交更改。


-1

提交代码。

git checkout -b myfeature

首先,如果您喜欢的话


我想生成一个补丁文件,而不需要进行提交。 - MOHAMED

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接