>>git difftool branch1 branch2
打开我的difftool(Beyond Compare:BC)与每个在分支之间有差异的文件.我必须在每个文件之后关闭BC,只是为了重新打开下一个文件.
BC可以区分整个目录和多个文件.
有没有办法git difftool
同时打开所有文件,或同时扩散整个树?
我想运行git difftool HEAD~3.. path/to/file
并让git为这三个提交中的每个提交打开difftool,以便我可以看到每个提交的并排视图.
我怎样才能获得git-difftool来做到这一点?
我有2个分支,我可以使用我的difftool(Beyond Compare)比较/差异.但是,用于diff的文件是临时副本,而不是当前分支中的实际文件.这意味着如果我想对现有文件进行更改,我无法通过difftool进行更改.我需要复制一个分支的文件,签出另一个分支并在实际文件之间使用常规差异.
有没有办法让difftool使用当前分支的实际文件(至少在一边)?
更新和解决方案:
我用的命令是git difftool branch1 branch2
.无论当前分支如何,这都会区分2个分支.
该命令git difftool branch
按需运行,其中一个"side"作为当前检出的分支.
有没有办法查看同一文件的版本staged
和unstaged
版本之间的差异?
例如:
Changes to be committed:
modified: conf/application.conf
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: conf/application.conf
Run Code Online (Sandbox Code Playgroud)
当我进行更改然后再次修改文件而不进行暂存时会发生这种情况.
EDIT
该git status -vv
命令还不够好,因为我需要使用diff
/ difftool
命令.这是因为在实践中,太多文件中的更改太多,滚动浏览所有文件并不高效.但diff
/ difftool
允许我指定我感兴趣的文件.
我正在使用Visual Studio 2013和tfs 2013.有时我会进行代码更改并点击与最新版本进行比较.diff工具将打开,允许我在diff工具中编辑文件.但是其他时候它不会让我编辑但只会读.
是否有一些设置或我需要为我做的事总是允许编辑?
在数据库项目中,我注意到它永远不会让我在diff工具中编辑.我需要改变一些设置吗?
我在网上搜索过,但没有找到任何答案.谢谢.
我已经阅读了Git Pro网站,并且我已经在StackOverflow上阅读了多个答案,但遗憾的是我无法让.gitattributes为我工作.
每当我使用时git difftool
,它都会尝试显示二进制文件之间的差异,例如图像文件(PNG).
我在.gitattributes文件中尝试了各种组合,但每当我运行git difftool
命令时,它仍然会尝试比较二进制文件.
在我的存储库文件夹中,我有:
.git
.gitattributes
[我的项目的文件子目录]
我为.gitattributes文件尝试了很多过滤器组合.例如:
*.pbxproj binary
*.png二进制文件
或者:
*.pbxproj binary -diff
*.png binary -diff
甚至:
*.pbxproj binary
*.png binary
*.pbxproj -diff -difftool
*.png -diff -difftool
每次,我只需将我的.gitattributes文件添加到索引并提交它.但是,在这样做之后,当我运行我git difftool
来检查两个分支之间的差异时,会发生这种情况:
git difftool otherBranch HEAD
查看:'MyApp.xcodeproj/project.pbxproj'点击返回启动'diffmerge':
查看:'MyApp/Background1.png'点击返回启动'diffmerge':
它是怎么做到的?我怎么能最终正确设置我的.gitattributes文件,所以我不必查看这些特定文件的差异?
为了进一步调查,我使用了git check-attr
如下命令:
git check-attr binary MyApp/MainBackground.png
输出是MyApp/MainBackground.png: binary: set
......我想知道为什么git difftool仍然迫使我查看差异!
我想使用Xcode 4的"版本编辑器"视图作为Git的标准difftool.
换句话说,我希望能够设置此选项:
git config --global diff.external <XCODE>
Run Code Online (Sandbox Code Playgroud)
并且在Xcode的diff查看器中打开diff(因为它很酷).
这可能吗?怎么样?
我用我的git配置了kDiff3.
我需要的是看到两个分支之间的目录差异.我跑的时候
git difftool <headbranch>
命令它逐个打开所有文件.但那不是我想要的.
我在OSX上通过Homebrew安装了Meld 3.14.0(本帖的当前版本).每当我启动它时,它都会给我这样的:
Couldn't bind the translation domain. Some translations won't work.
'module' object has no attribute 'bindtextdomain'
2015-08-13 10:35:55.007 Python[2396:32534] *** WARNING: Method userSpaceScaleFactor in class
NSView is deprecated on 10.7 and later. It should not be used in new applications. Use convertRectToBacking: instead.
Run Code Online (Sandbox Code Playgroud)
现在它仍然启动,似乎工作正常.我可以查看文件的差异,这是我最关心的.当我退出时,我从命令行获得Mac OSX对话框"Python Quit Unexpectedly"以及这个:
/usr/local/Cellar/git/2.4.6/libexec/git-core/mergetools/meld: line 1: 2396 Segmentation fault: 11 "$merge_tool_path" "$LOCAL" "$REMOTE"
Run Code Online (Sandbox Code Playgroud)
编辑我只有点击红色X关闭Meld才能获得段错误.如果我退出Python(当Meld打开时在Dock中显示的内容)通过cmd + Q它会干净地关闭.
我使用的Meld版本是最新的,所以我很惊讶我找不到更多关于这个问题的信息.我的Python版本是2.7.10.
其他人有这个问题吗?我担心,当我想实际进行合并并保存时,由于崩溃我无法做到.
我正在考虑以一种并不真正适合的方式使用子模块,但我的目标是为开发人员简化一些事情。我有一个项目基本上仅由子模块组成 - 其中 4 个。重要的是它们彼此独立,否则我只会制作一个大的回购协议。从父存储库中,我可以通过执行 立即查看所有子模块的差异git diff --submodule=diff
。
但我真正想要的是相当于git difftool -d
但同时适用于所有子模块。理论上 difftool 应该与该--submodule=diff
标志一起使用(因为git difftool
具有与 diff 相同的选项),但事实并非如此。有想法吗?