Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从另一个Commit us git difftool将文件复制到工作树中?_Git_Diff - Fatal编程技术网

如何从另一个Commit us git difftool将文件复制到工作树中?

如何从另一个Commit us git difftool将文件复制到工作树中?,git,diff,Git,Diff,我试过使用Meld和Beyond Compare,它们都有相同的行为。我在要素分支上运行以下命令: git difftool --dir master & 该命令将显示我的difftool,它可以是混合的,也可以是无与伦比的 然后,我将要素分支中不存在的主控文件复制到我的要素分支。关闭difftool后,这些文件不会添加到我的工作树中 是否可以执行此操作?有时我移动或删除文件,但想撤消这些移动或删除。我希望用一个视觉工具来解开它们。可能我使用了错误的git命令。将文件从其他提交/分支复

我试过使用Meld和Beyond Compare,它们都有相同的行为。我在要素分支上运行以下命令:

git difftool --dir master &
该命令将显示我的difftool,它可以是混合的,也可以是无与伦比的

然后,我将要素分支中不存在的主控文件复制到我的要素分支。关闭difftool后,这些文件不会添加到我的工作树中


是否可以执行此操作?有时我移动或删除文件,但想撤消这些移动或删除。我希望用一个视觉工具来解开它们。可能我使用了错误的git命令。

将文件从其他提交/分支复制到工作树(并准备将其放入下一次提交)的命令是:

git签出[][--]。。。
正如所解释的那样:

通过替换为索引或
中的内容(通常是提交),覆盖工作树中的路径。当给定
时,与
匹配的路径将在索引和工作树中更新

git difftool
在这里没有帮助


阅读更多信息。

我希望我不必依赖git checkout,但我认为这是有道理的,因为我感谢它。difftool可以将更改应用于工作树中的文件,但它不知道或不关心从哪个VCS调用它。既然如此,该工具就不知道如何通过git将文件带回来。好的,谢谢你的澄清。也许还有另一个与git更深入集成的可视化工具可以做到这一点。或者,如果更改以一种良好的原子方式提交,您可以恢复更改。Git在快照中思考,将文件视为元数据,而不是其他任何东西(这就是为什么您可以跨文件移动跟踪历史,甚至跟踪在文件之间移动的代码)。如果您尝试从提交而不是文件的角度来考虑更改,那么在git中工作会更加轻松。git会使用工作树中的文件或临时文件调用difftool,这些文件包含不同提交时的文件版本。diff工具本身不知道也不关心Git分支或历史。Git解析命令行,从临时文件(如果它们不是工作树中的文件)中的相应提交中检出文件,并调用diff工具。听起来您可能手头有一个。将内容从一个分支移动到另一个分支几乎总是可以通过合并或重定分支、挑选或恢复提交或签出单个文件来完成的(以降低复杂化的可能性)。
git checkout [<tree-ish>] [--] <pathspec>...