我gitk
通过右键单击提交并选择“将提交写入文件”将提交写入文件。
如何应用此文件的提交?我可以做git apply
,git add
和git commit
组合,但是没有一步命令来获取输出(带有提交消息和元数据)并按原样提交吗?
我gitk
通过右键单击提交并选择“将提交写入文件”将提交写入文件。
如何应用此文件的提交?我可以做git apply
,git add
和git commit
组合,但是没有一步命令来获取输出(带有提交消息和元数据)并按原样提交吗?
似乎没有人提供这个问题的实际答案,所以这是我从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.'
我正在使用 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
格式,但我不做太多补丁,所以我不知道它是临时的。
git am
可能会做你正在寻找的东西。它需要生成的补丁git format-patch
作为输入。我不知道git-gui
吐出来的是什么。
我以一种棘手的方式解决了这个问题。我猜想,我以一种棘手的方式得到了它。
我使用了我前一段时间工作的旧主分支,现在决定将它逐个提交带到我的新项目中。似乎在几天前,我在一个提交和另一个提交之间搞乱了我的文件模式。
因此,在通过点击gitk
“将提交写入文件”持续创建这些提交文件以进行移动之后,我开始在记事本中编辑其中的一些文件时一个接一个地“git apply”提交文件。这是对我有用的修复示例。
我调整了这些部分
index 30d5c59..63e26fb 100755
让它们看起来像这样
old mode 100644
new mode 100755
index 30d5c59..63e26fb
希望这对其他人有帮助。