相关疑难解决方法(0)

如何在git历史中grep(搜索)已提交的代码?

我过去的某个时候删除了文件或某些代码.我可以在内容中进行grep(不在提交消息中)吗?

一个非常糟糕的解决方案是grep日志:

git log -p | grep <pattern>
Run Code Online (Sandbox Code Playgroud)

但是,这不会立即返回提交哈希.我一直玩得git grep无济于事.

git diff grep

1342
推荐指数
10
解决办法
36万
查看次数

想要从"git diff"中排除文件

我试图db/irrelevant.php从Git diff中排除一个文件().我试图把在一个文件db名为的子目录.gitattributes与行irrelevant.php -diff ,我也尝试创建一个名为.git/info/attributes包含db/irrelevant.php.

在所有情况下,该db/irrelevant.php文件都作为Git二进制补丁包含在diff中.我想要的是diff命令忽略对该文件的更改.我究竟做错了什么?

git diff git-diff

202
推荐指数
9
解决办法
7万
查看次数

从git diff中排除目录

我想知道如何从我的Git diff中排除整个目录.(在这种情况下/规范).我正在使用git diff命令为我们的整个软件版本创建差异.但是,规范的更改与此过程无关,只会造成令人头疼的问题.现在我知道我能做到

git diff previous_release..current_release app/
Run Code Online (Sandbox Code Playgroud)

这将为app目录中的所有更改创建一个diff,但不会在lib /目录中创建.有谁知道如何完成这项任务?谢谢!

编辑:我只是想清楚,我知道我可以在最后编制所有目录的参数,减去/ spec.我希望有一种方法可以真正排除命令中的单个目录.

git

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

git update-index - 在目录上保持不变

git 1.7.12

我想将给定目录下的所有文件标记为假设未更改.

1)git update-index --assume-unchaged dir/给出"忽略路径".

2)git update-index --assume-unchaged dir/*快速失败,因为它会遇到未被跟踪的文件,因此它给出"致命:无法标记文件"并退出.

3)尝试生成要标记的文件列表. cd进入所需目录然后运行git ls-files | tr '\n' ' ' | git update-index --assume-unchanged.这不会产生任何错误消息,但不会成功标记文件.命令的第一部分git ls-files | tr '\n' ' '正确生成了我要标记的所有文件的空格分隔列表.如果我将该命令的输出复制并粘贴到命令行,则该git update-index命令有效.什么不使用管道?

不,我添加dir到.gitignore 是不够的.我需要将这些文件放在存储库中,但是需要在本地进行不需要的更改,以便用户可以进行拉取.

git command-line pipe

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

如何反转`git log --grep = <pattern>`或如何显示与模式不匹配的git日志

我想用来git log显示与给定模式不匹配的所有提交.我知道我可以使用以下内容来显示与模式匹配的所有提交:

git log --grep=<pattern>
Run Code Online (Sandbox Code Playgroud)

如何反转匹配感?

我试图忽略消息中"碰到版本..."的提交.

编辑:我希望我的最终输出非常详细.例如git log --pretty --stat.所以输出git log --format=oneline对我来说不起作用.

git git-log

34
推荐指数
3
解决办法
1万
查看次数

git diff --stat排除某些文件

尝试调整来自旺旺的答案以从"git diff"中排除文件以获得--stat标志并失败 - 接受的答案(创建驱动程序)似乎只是unix(重定向到/ bin/true,无论这意味着什么)加上它创建了一个驱动程序将它永久地分配给文件类型,而我正在寻找一个开关来临时禁用文件的差异(或者更确切地说是某些文件).

脚本解决方案:

git diff `git status -s |grep -v ^\ D |grep -v file/to/exclude.txt |cut -b4-`
Run Code Online (Sandbox Code Playgroud)

实际上调用git状态并编辑其​​输出 - 而我想要的是指示git diff本身在计算(简单)--stat(只是更改行)时忽略一些文件.我经历了git-diff文档,但似乎无法找到这样的选项.有人帮我一把吗?

$ git --version
git version 2.6.1.windows.1
Run Code Online (Sandbox Code Playgroud)

git git-diff

15
推荐指数
1
解决办法
9055
查看次数

git diff noindex 排除文件

有没有人在将文件夹与 git diff --no-index 进行比较时如何排除文件?似乎这个选项

':(exclude)*.min.css'
Run Code Online (Sandbox Code Playgroud)

不适用于无索引(在工作树之外)

git diff

10
推荐指数
1
解决办法
644
查看次数

为什么不是pathpec magic :(排除)从git log的输出中排除指定的文件?

这是在git log -p中忽略文件的后续内容,也与使'git log'忽略某些路径的更改有关.

我正在使用Git 1.9.2.我正在尝试使用pathspec魔术:(exclude)来指定某些补丁不应该在输出中显示git log -p.但是,我要排除的修补程序仍显示在输出中.

这是一个重现这种情况的最小工作示例:

$ cd ~/Desktop
$ mkdir test_exclude
$ cd test_exclude
$ git init
$ mkdir testdir
$ printf "my first cpp file\n" > testdir/test1.cpp
$ printf "my first xml file\n" > testdir/test2.xml
$ git add testdir/
$ git commit -m "added two test files"
Run Code Online (Sandbox Code Playgroud)

现在我想显示我的历史记录中的所有补丁,期望与文件testdir夹中的XML文件相对应的补丁.因此,按照VonC的回答,我跑了

$ git log --patch -- . ":(exclude)testdir/*.xml"
Run Code Online (Sandbox Code Playgroud)

但我的testdir/test2.xml文件的补丁仍显示在输出中:

commit 37767da1ad4ad5a5c902dfa0c9b95351e8a3b0d9
Author: xxxxxxxxxxxxxxxxxxxxxxxxx
Date: …
Run Code Online (Sandbox Code Playgroud)

git git-log

9
推荐指数
1
解决办法
2219
查看次数

在2.0版本的git add --update语法中,/(冒号,正斜杠)是什么意思?

几个月前我升级了Git,从那时起,我一直在尝试接受以下弃用通知git add --update:

警告:行为"git的添加--update(或-u)"从树的子目录没有路径参数将在Git的2.0改变,不应再使用.要为整个树添加内容,请运行:

git add --update:/(或git add -u:/)

要将命令限制到当前目录,请运行:

git add --update.(或git add -u.)

使用当前的Git版本,该命令仅限于当前目录.

警告本身非常有意义,它为我节省了一些重置.我已经习惯了输入.或者:/,但仍然发现后者非常奇怪,因为它与我遇到的任何其他命令行语法不同.这.是非常令牌:它只是意味着"当前目录",就像在find .,但:/......从未见过,除非在此上下文中.这是什么意思?

我一直认为它是一个表情符号,当然不是这样吗?

git

8
推荐指数
1
解决办法
2454
查看次数

git show:检查过去提交的更改时排除目录

我通常使用git show命令检查提交引入的更改。这很有效,除非我只对在已更改文件的子集中引入的更改感兴趣。

有没有类似的东西git show --exclude some/path可以开箱即用?

git

7
推荐指数
2
解决办法
1299
查看次数

标签 统计

git ×10

diff ×3

git-diff ×2

git-log ×2

command-line ×1

grep ×1

pipe ×1