6

gitk通过右键单击提交并选择“将提交写入文件”将提交写入文件。

如何应用此文件的提交?我可以做git apply,git addgit commit组合,但是没有一步命令来获取输出(带有提交消息和元数据)并按原样提交吗?

4

4 回答 4

4

似乎没有人提供这个问题的实际答案,所以这是我从https://github.com/sinsunsan/archiref_wiki/wiki/Git-howto找到的

patch -p1 < patch-file

这需要'Write commit to file'生成的补丁文件,告诉它忽略文件中的第一级路径(-p1),即a/,b/,并应用于磁盘上的当前文件。然后结果在您的工作树中,并且可以作为新提交提交:

git commit -am'Commit message here please.'
于 2014-09-02T09:42:32.233 回答
2

我正在使用 Linux,但我想我明白你在说什么。右键单击提交时,gitk有一个“将提交写入文件”选项,它会弹出一个对话框,git diff-tree --stdin -p --pretty默认情况下执行该命令。

git apply仅用于应用差异,即它不会创建提交对象,因此不应使用。git am应该是执行此操作的正确工具,因为它会创建提交对象。但是,它不理解上述命令输出的格式,并产生您所看到的错误。

git am最简单的选择可能是使用可以理解的格式创建补丁,git format-patch而不是git diff-tree. 可能有一种方法可以强制git am理解git diff-tree格式,但我不做太多补丁,所以我不知道它是临时的。

于 2012-04-19T16:00:24.827 回答
0

git am可能会做你正在寻找的东西。它需要生成的补丁git format-patch作为输入。我不知道git-gui吐出来的是什么。

于 2012-04-19T14:17:05.313 回答
0

我以一种棘手的方式解决了这个问题。我猜想,我以一种棘手的方式得到了它。

我使用了我前一段时间工作的旧主分支,现在决定将它逐个提交带到我的新项目中。似乎在几天前,我在一个提交和另一个提交之间搞乱了我的文件模式。

因此,在通过点击gitk“将提交写入文件”持续创建这些提交文件以进行移动之后,我开始在记事本中编辑其中的一些文件时一个接一个地“git apply”提交文件。这是对我有用的修复示例。

我调整了这些部分

index 30d5c59..63e26fb 100755

让它们看起来像这样

old mode 100644
new mode 100755
index 30d5c59..63e26fb

希望这对其他人有帮助。

于 2020-11-26T20:30:56.397 回答