说我在我当地的主分公司工作。我更改了文件A和文件B.但是文件B中的更改只是调试内容,我不想提交它们。所以我暂存文件A并运行git commit
。
现在我想针对origin / master生成一个补丁文件。但是,当我运行以下命令时,生成的修补文件包含我对文件A和B的更改。是否有办法为本地主服务器与origin / master中的当前提交的文件生成补丁? (仅包含我已提交给本地分支的更改的补丁)
git diff -M --full-index origin/master > ../diff.patch
答案 0 :(得分:3)
git format-patch -1 HEAD
假设您只想要最近的提交
答案 1 :(得分:1)
按照以下步骤,可能会有所帮助
git stash
清除回购,即文件B修改将会消失。git stash apply
答案 2 :(得分:1)
最简单,最明显正确的答案直接源于你在问题中的意图:
现在我想针对origin / master生成一个补丁文件。
如果你想要一个补丁,不管你做了多少次提交,只需将origin/master
树与你当前的提交区分开来:
$ git diff -M --full-index origin/master HEAD
(我在此处添加了-M
和--full-index
,因为您在示例命令中执行了此操作。请注意,您可以通过在{{3}中设置-M
来使diff.renames = true
成为默认值}}。)
如果您希望以git am
处理的格式提交每次提交的修补程序,则可以使用git config
settings。因为它是为了做这种事情而设计的,所以它需要一个单一的"他们有什么承诺"标识符,因此:
$ git format-patch origin/master
与以下内容相同:
$ git format-patch origin/master..HEAD
所以这些中的任何一个都可以互换使用。有关其他详细信息,请参阅git format-patch
。