我已经通过右键单击提交并选择“将提交写入文件”来编写来自gitk
的文件的提交。
如何应用此文件中的提交?我可以做git apply
,git add
和git commit
组合,但是没有一步一步的命令来获取输出(使用提交消息和元数据)并提交它它是什么?
答案 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
希望这对其他人有帮助。