繁体   English   中英

打开repo文件而不是tmp文件来修改git difftool

open repo file instead of a tmp file to modify in git difftool

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

git difftool --tool=vimdiff --no-prompt HEAD~1 HEAD

git将打开vim,左侧和右侧有两个临时文件。 有没有办法强行打开右边的repo文件,以便我可以直接修改它?

1 个回复

否:因为您选择了两个特定的提交 ,所以没有要更改的文件

这似乎有点奇怪。 它实际上一个有点奇怪,直到你意识到这件事的提交:同时提交确实包含的文件,1个文件它们包含被冻结 它们都不可能被改变。 它们被提交 ,并且任何提交的内容与提交本身一样永久, 2并且完全是只读的。

当然,当您使用Git时,您可以更改文件。 如果你没有,那就很难使用Git了。 但那些不是提交的文件:那些是工作树副本。 如果您指示git difftool --tool=vimdiff将这些文件用作操作的一端,则它已经直接打开了这些文件。 要做到这一点:

git difftool --tool=vimdiff <options> <commit>

例如,其中<options>包括你的--no-prompt<commit>可能再次是HEAD~1

(与git diff ,可以告诉git difftool比较两个提交,或者将一个提交与当前工作树进行比较。没有选项将提交与当前索引内容进行比较。其余的答案没有提到索引,但索引保存每个文件的第三个副本。提交内的文件是一种特殊的,只读的,仅Git格式。工作树中的文件是有用的格式,以便您可以读取或编辑你的索引中的文件位于中间区域,在它们被冻结的HEAD提交和它们正常的工作树之间:索引副本被解冻,但仍然只是Git和压缩.Git使新的从索引副本提交,这就是为什么你必须一直运行git add 。)


1从技术上讲,提交并不包含 引用文件的文件。 文件使用一系列间接存储:提交指向对象, 对象提供文件名,模式和内容的哈希ID; 然后树中的哈希ID指向保存文件内容的Git blob对象 这允许两个不同的树(可能具有不同的模式或不同的文件集)来重用现有的冻结文件内容,并允许不同的提交(可能具有不同的作者或时间戳)来重用现有的冻结树,其重用现有的冻结提交。 这只是Git用来节省大量空间的几个技巧之一,即使每个提交都存储了每个文件的完整和完整副本:在引擎盖下,有大量的旧文件重复使用。

2提交通常永远存在,但是如果每个拥有某些提交的人 - 如某些哈希ID所标识的那样 - 同意永远停止使用该提交并将其从历史列表中删除,那么Git最终会忘记真实的提交。 如果有人不同意,他们可以轻松地再次引入提交,事实上,这是默认设置。 因此,一旦将它们传播到其他Git存储库,就很难永久地删除它们,因为要永久地删除它们,你必须从每个 Git存储库中删除它们。

1 git不打开difftool?

我已经安装了git,p4merge和源代码树。 我只想使用p4merge进行差异和合并。 在打开sourcetree之前, git difftool用于打开p4merge。 但是现在,它仅显示命令行上的差异。 为什么会发生这种情况,我该如何解决? 我将sourcetree设置为从s ...

2019-03-06 23:13:20 1 124   git
2 用git删除tmp文件

我在我的项目中使用git,但是我是该控件版本的新手,我现在有一个疑问(问题),我不知道要解决它。 我确实也提交了本地存储库和远程存储库,但是我没有忽略一些文件,例如:.classpath,.project 、。 设置,...我也没有忽略以下文件夹:target,servers ..,现在它们 ...

2015-03-02 13:47:32 0 711   git
3 Git 不会忽略 tmp 文件

我在 Ruby On Rails 应用程序中遇到了这个烦人的问题,其中 git 不断提交这些tmp/文件。 在我的.gitignore文件中,我有tmp/所以我不明白它们为什么一直出现……这是我的.gitignore文件以供参考: 这只是一个让我的团队和我在 repo 上感到恼火的小问题。 感谢 ...

4 使用 git-difftool 显示原始文件名

我将xxdiff与git-difftool ,但其他 GUI diff 工具也有同样的问题。 通常, git-difftool必须将要比较的文件保存为临时文件,名称类似于/tmp/i2mLYu_MyHeader.h 。 那是一个文件,相对于工作树,可能是client/api/include/MyHe ...

6 git-difftool:使用meld进行完整文件树比较?

有没有一种简单的方法可以将旧git提交的文件树与工作文件树进行比较? git-difftool做了非常相似的事情,但我不希望它实际上做任何差异; 重点是它调用的工具可以为它提供更好的界面。 ...

7 在Git中用于二进制文件的Difftool

我已经使Git通过使用.bat文件(或批处理脚本)将文件复制到Windows中Temp文件夹中的目录来比较一些二进制文件。 该脚本将复制原始文件,并创建一个扩展名为.txt的伴随文件,其中包含二进制文件的文本表示形式。 然后,它使用以下命令写入生成的文件的内容 所有使用Git属性 ...

8 Git 状态和本地 repo 文件

假设我的项目文件夹中有以下文件: 现在我已经对文件做了以下操作: 现在当我做 没有列出文件a.txt、b.txt 。 为什么 Git 状态不显示现在在本地 repo 中的这些a.txt、b.txt文件? ...

2020-06-13 13:53:00 3 37   git
9 防止Git删除tmp文件

我想在cygwin上使用IntelliJ作为比较工具。 但是,在IDEA显示差异屏幕之前,将删除/tmp下创建的tmp文件。 我的问题是如何防止删除tmp文件? 在git上有任何配置吗? 编辑: 当您回显路径时,我可以看到路径,但是此路径中没有任何文件。 我的控制台中也 ...

10 如何用git打开所有修改过的文件?

如何打开自上次git提交以来所有已删除,修改和创建的文件,我首先尝试使用git status ,但是很难解析,所以我发现git status --porcelain更容易解析并且使用awk + ​​vim + some bash魔术很容易做到。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM