相关疑难解决方法(0)

使用git查看对特定文件的更改

我知道我可以使用该git diff命令来检查更改,但据我所知,它是基于目录的.这意味着它提供了当前目录中所有文件的所有更改.

如何仅检查一个特定文件中的更改?说,我已经更改了文件file_1.rb,file_2.rb...,file_N.rb但我只对文件中的更改感兴趣file_2.rb.我如何检查这些更改(在我提交之前)?

git git-svn

413
推荐指数
9
解决办法
36万
查看次数

当Linus Torvalds说Git“从不”跟踪文件时,这意味着什么?

当被问及Git 在2007年Google的技术演讲期间可以处理多少文件时,引用Linus Torvalds的(43:09):

…Git跟踪您的内容。它永远不会跟踪单个文件。您无法在Git中跟踪文件。您可以做的是,您可以跟踪一个文件的项目,但是如果您的项目有一个文件,请确保做到这一点并且可以做到,但是如果您跟踪10,000个文件,Git永远不会将它们视为单个文件。Git认为一切都是完整的内容。Git中的所有历史都基于整个项目的历史…

这里的成绩单。)

然而,当你潜入Git的书,你被告知的第一件事是,在Git的文件既可以跟踪未经跟踪。此外,在我看来,整个Git体验都面向文件版本控制。使用git diffgit status输出时按文件显示。使用时,git add您还可以根据每个文件进行选择。您甚至可以基于文件查看历史记录,而且速度很快。

该陈述应如何解释?在文件跟踪方面,Git与其他源代码控制系统(例如CVS)有何不同?

git version-control

280
推荐指数
6
解决办法
3万
查看次数

git diff文件反对它的最后一次更改

是否有可能让git在特定文件之间产生差异,因为它现在存在,并且在最后一次提交之前存在改变它?

也就是说,如果我们知道:

$ git log --oneline myfile
123abc Fix some stuff
456def Frobble the foos
789dba Initial commit
Run Code Online (Sandbox Code Playgroud)

然后git diff 456def myfile显示myfile的最后一次更改.没有所产生的知识,是否有可能做同样的事情git log; 123abc有什么变化?

git git-diff

221
推荐指数
3
解决办法
17万
查看次数

显示文件的历史记录?

可能重复:
使用Git版本控制查看文件的更改历史记录

有时我想逐步浏览特定文件的历史记录.在过去,我使用P4V,这非常快速和直观.

  1. 右键单击文件并选择历史记录.
  2. 通过日期滚动,看到的究竟是什么改变一个很好的差异在文件日期.简单.

切换到git这是一项艰巨的任务.

  1. "git log filename"
  2. 查看历史记录并选择日期,复制哈希值
  3. "git diff hash"
  4. 滚动浏览差异,查看我感兴趣的文件中更改的内容.
  5. 不,不是这样,让我们​​尝试不同的日期 - 回到第2步,冲洗并重复.

我搜索了SO,我尝试了一些常用的guis:github,gitk,gitg,git-gui.

这些都消除了手动运行命令的需要,但工作流程与此相同.查看文件历史记录; 查看提交; 搜索大量不相关文件的差异.这是缓慢而重复的.

所有数据都在repo中,所以我认为这个简单的常见用例没有理由不能简化.

任何人都可以推荐一个这样做的工具 - 或者更有效的方式来利用命令行来做我想要的事情?

谢谢你的任何建议.

git version-control github git-history

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

git diff重命名文件

我有一个文件a.txt.

cat a.txt
> hello
Run Code Online (Sandbox Code Playgroud)

内容a.txt是"你好".

我做了一个提交.

git add a.txt
git commit -m "first commit"
Run Code Online (Sandbox Code Playgroud)

然后我a.txt进入了一个test目录.

mkdir test
mv a.txt test
Run Code Online (Sandbox Code Playgroud)

然后我做了第二次提交.

git add -A
git commit -m "second commit"
Run Code Online (Sandbox Code Playgroud)

最后,我编辑a.txt说"再见".

cat a.txt
> goodbye
Run Code Online (Sandbox Code Playgroud)

我做了最后一次提交.

git add a.txt
git commit -m "final commit"
Run Code Online (Sandbox Code Playgroud)

现在这是我的问题:

如何区分a.txt上次提交和第一次提交之间的内容?

我试过了 git diff HEAD^^..HEAD -M a.txt,但是那没用. git log --follow a.txt正确检测重命名,但我找不到相应的git diff.有吗?

git diff rename

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

带行号的Git diff(带行号的Git日志)

当我执行a git diff或a时git log -p,如何获取与输出内联的源文件的行号?

我试着man git-diff | grep "line numbers"查一下,我试着谷歌搜索,但没有得到任何快速.

git line-numbers

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

Git与Windows上的Meld合并工具

在Linux中,我最喜欢的合并工具是Meld,我使用或配置它与Git一起工作时没有任何问题.然而,在Windows中它是一个不同的故事.

首先,我从我在这里找到的软件包中安装了Meld:https://code.google.com/p/meld-installer/

然后,我配置了我的.gitconfig,以支持Meld作为默认的mergetool

[merge]                                                      
    tool = meld                                                                         

[mergetool "meld"]                                           
    path = C:\\Program Files (x86)\\Meld\\meld\\meld.exe
    keepBackup = false                                   
    trustExitCode = false
Run Code Online (Sandbox Code Playgroud)

所以,当我遇到冲突时,我会做git difftool而Meld确实打开了.但是,Git写入传递给diff工具的文件的路径不正确.例如,即使Git在存储库目录(我称之为git mergetool的位置)中生成BASE,LOCAL和REMOTE文件,Meld也会尝试打开可执行文件目录中的每个文件.

Meld尝试打开C:\ Program Files(x86)\ Meld\meld\roses.txt.LOCAL.2760.txt,而不是打开C:\ repo\roses.txt.LOCAL.2760.txt.

有没有人遇到过这个或知道如何配置Git/Meld在Windows中正常工作?

git meld

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

在Magit中查看文件的历史记录?

使用Git版本控制查看文件的更改历史记录,了解在Git中查看文件历史记录的其他方法.

可以在Emacs Magit中完成吗?

git emacs magit

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

查看移动文件的GIT历史记录

尽管阅读了很多关于GIT和移动文件的帖子,但我仍然很难理解如何追踪完整的历史记录.这样gitk myfile的建议在这里似乎只能说明历史,直到前一个举动.据我所知,GIT不会跟踪文件,只跟踪文件的内容.所以我肯定能够查看文件的完整演变,即使它被移动了吗?

任何人都可以指导我一个简单的好例子/教程吗?

我想看一个示例,其中一些文件被移动,更改和提交,然后显示单个文件的历史记录,移动和所有.我一直在看'日志',但这似乎与checkins有关.仍然会欣赏一些建议,即使它说我仍然在想太多的SVN.

git

72
推荐指数
1
解决办法
2万
查看次数

让Git确认先前移动的文件

我在没有考虑的情况下手动移动了一堆文件,并且找不到让git认识到文件只是被移动而不是实际上不同的文件的方法.有没有办法做到这一点,除了删除旧的和添加新的(从而丢失历史),或使用git-mv重做所有更改?

git

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