从git项目生成补丁文件而不提交

时间:2012-08-16 16:52:07

标签: git

我正在使用git开发一个开源项目。

我对源代码做了一些修改(修改现有文件,添加新文件,删除现有文件),我想生成一个没有提交的补丁文件。怎么做?

3 个答案:

答案 0 :(得分:3)

它并不广为人知,或者它只是没有被广泛用作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 :(得分:3)

用于项目中添加的新文件:

git add -N <path of the new file>

然后生成补丁:

git diff > patch

答案 2 :(得分:-1)

提交。

git checkout -b myfeature

首先,如果你喜欢