我如何反转gitk的“写提交文件”?

时间:2012-04-19 14:14:37

标签: git git-commit gitk

我已经通过右键单击提交并选择“将提交写入文件”来编写来自gitk的文件的提交。

如何应用此文件中的提交?我可以做git applygit addgit commit组合,但是没有一步一步的命令来获取输出(使用提交消息和元数据)并提交它它是什么?

4 个答案:

答案 0 :(得分: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格式,但我不会做很多补丁,所以我不会随意发现它。

答案 1 :(得分:2)

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

patch -p1 < patch-file

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

git commit -am'Commit message here please.'

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

我带着我以前工作的旧的主分支,现在决定将它逐个提交地带到我的新项目中。似乎在过去,我在一次提交和另一次提交之间弄乱了文件模式。

因此,在通过点击gitk的“写入文件”一贯创建用于移动的这些提交文件之后,我开始在记事本中编辑其中一些提交文件的同时“逐一应用”提交文件。 这是对我有用的修复程序示例。

我调整了这些部分

index 30d5c59..63e26fb 100755

使它们看起来像这样

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

希望这对其他人有帮助。