相关疑难解决方法(0)

使用Git版本控制查看文件的更改历史记录

如何在Git中查看单个文件的更改历史记录,完整的详细信息?

我有:

git log -- [filename]
Run Code Online (Sandbox Code Playgroud)

它显示了文件的提交历史记录,但是如何获取每个文件更改的内容?

我正试图从MS SourceSafe过渡到过去那么简单right-clickshow history.

git git-log

2920
推荐指数
23
解决办法
156万
查看次数

如何让Git使用我选择的编辑器进行提交?

我更愿意在Vim中编写提交消息,但它在Emacs中打开它们.

如何配置Git以始终使用Vim?请注意,我想在全球范围内执行此操作,而不仅仅是针对单个项目.

git vim emacs commit-message editor

2362
推荐指数
17
解决办法
86万
查看次数

什么是Git最好的视觉合并工具?

在Git中查看和编辑合并的最佳工具是什么?我想得到一个3向合并视图,在单独的面板中有"我的","他们的"和"祖先",以及第四个"输出"面板.

此外,调用所述工具的说明也很棒.(我仍然没有弄清楚如何以这样的方式启动kdiff3,它不会给我一个错误.)

我的操作系统是Ubuntu.

git version-control merge

566
推荐指数
16
解决办法
38万
查看次数

设置并使用Meld作为你的git difftool和mergetool

虽然这个问题和答案中的大部分信息都可以在StackOverflow上获得,但它分布在许多页面以及其他错误或误导性的答案中.我花了一段时间拼凑出我想知道的一切.

有很多不同的程序可以用作你的git difftool和mergetool,对于哪个是最好的(意见,要求和操作系统明显不同)肯定没有共识.

Meld是一个流行的跨平台(UNIX/Linux,OSX,Windows)选择,如StackOverflow问题所示,什么是Git最好的可视化合并工具?其中提出梅尔德的答案的答案是其他任何工具的3倍以上.

我的答案将在下面回答以下两个问题:

  • 如何设置和使用Meld作为我的git difftool?
  • 如何设置和使用Meld作为我的git mergetool?

注意:没有必要使用与difftool和mergetool相同的程序,可以为两者设置不同的程序.

git meld

216
推荐指数
5
解决办法
15万
查看次数

Git diff提交范围中双点".."和三点"..."之间有什么区别?

以下命令之间有什么区别?:

git diff foo master   # a 
git diff foo..master  # b
git diff foo...master # c
Run Code Online (Sandbox Code Playgroud)

diff手册谈到它:

比较分支机构

$ git diff topic master    <1>
$ git diff topic..master   <2>
$ git diff topic...master  <3>
Run Code Online (Sandbox Code Playgroud)
  1. 主题提示与主分支之间的更改.
  2. 与上述相同.
  3. 自主题分支启动以来主分支上发生的更改.

但对我来说并不完全清楚.

git diff git-diff

175
推荐指数
4
解决办法
2万
查看次数

当我做"git diff"时,如何获得并排差异?

当我输入"git diff"时,我想看到一个并排的差异,就像"diff -y"一样,或者喜欢在像"kdiff3"这样的交互式差异工具中显示差异.如何才能做到这一点?

git git-diff code-visualization

140
推荐指数
11
解决办法
8万
查看次数

Git diff只显示已修改的行

当我做一个git diff时,它会显示已添加的行:

+ this line is added
Run Code Online (Sandbox Code Playgroud)

已删除的行:

- this line is removed
Run Code Online (Sandbox Code Playgroud)

但它也显示了许多未修改的行:

this line is not modified
this line is also not modified
Run Code Online (Sandbox Code Playgroud)

这导致实际的git diff看起来像这样:

+ this line is added
  this line is not modified
- this line is removed
  this line is not modified
Run Code Online (Sandbox Code Playgroud)

我可以要求git只显示已修改的行并忽略所有其他未修改的代码吗?我写了一个方法,它将删除所有在它们前面没有"+"或" - "符号的行,但我相信必须有一个更简单的方法来执行此操作.

在我的git diff中,我只对看到已修改的行感兴趣.

提前致谢.

git

107
推荐指数
4
解决办法
4万
查看次数

是否有类似于bzr qannotate的git blame gui?

作为一个以前的bzr用户和新手,git我正在努力寻找git blame类似的好GUI工具bzr qannotate.后者有两个主要观点:

  1. 具有短注释信息的文件内容查看器(谁在哪个版本中更改了行)+基于提交者ID和更改年龄的背景着色.
  2. 文件日志查看器:当我单击文件内容中的行时,我可以看到该行更改时的修订以及有关它的所有日志信息.

截图: 在此输入图像描述

我看到XCode IDE有类似内置的内容,虽然它在编辑器窗口内,因此不是很方便.

到目前为止,我已经尝试过GitX 0.7.1和M​​ac的GitHub - 他们都没有"责怪".

我刚刚检查了SourceTree for Mac,虽然它有责备支持,但它相当简陋,并且显示我几乎与命令行相同git blame,尽管我可以双击该行以查看相应的修订和另一个窗口中的更改.那仍然不如bzr qannotate.

我可以使用其他GUI工具吗?

git bazaar blame

20
推荐指数
3
解决办法
5070
查看次数

Windows上的Git Diff和Meld

有没有人让Meld在Windows上与Git合作?我试图让它工作,我没有成功.

我安装了Meld,当我从命令行调用它时有两个文件作为参数,它们很好地区分它们以便正确安装Meld.但是我无法使用Git(Git Diff).我使用的git version 1.8.1.msysgit.1是Git 版本.

我尝试了几件事:我创建了一个shell脚本,meld.sh:

#!/bin/bash
meld.exe "$2" "$5"
echo $2
echo $5
Run Code Online (Sandbox Code Playgroud)

并从Git中使用它:

[diff]
    tool = meld

[difftool "meld"]
    cmd = \"D:\\meld.sh\"
Run Code Online (Sandbox Code Playgroud)

我试着把它添加为像这样的difftool:

[diff]
    tool = meld

[difftool "meld"]
    cmd = \"C:\\Program Files (x86)\\Meld\\meld\\meld.exe\" 
Run Code Online (Sandbox Code Playgroud)

或者像这样:

[diff]
    tool = meld

[difftool "meld"]
    cmd = '\"/c/Program Files (x86)/Meld/meld/meld.exe\" $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE --output=$PWD/$MERGED'
Run Code Online (Sandbox Code Playgroud)

但它似乎真的不起作用.我还试图从我的shell脚本中回显第二个($ 2)和第五个($ 5)参数,没有输出.我还尝试过以下几种方式使用批处理脚本:

meld.exe %2 %5
Run Code Online (Sandbox Code Playgroud)

要么

meld.exe %~2 %~5
Run Code Online (Sandbox Code Playgroud)

但它确实不起作用......如何在传播Git到Meld时传递文件的两个版本?这很烦人......

git git-diff meld msysgit difftool

16
推荐指数
3
解决办法
2万
查看次数