相关疑难解决方法(0)

如何从git存档中排除文件?

给定一个带有两个文件的单个提交的简单测试存储库,a并且b,我可以获得特定文件的列表:

$ git ls-files a
a
Run Code Online (Sandbox Code Playgroud)

或者除特定文件之外的所有文件的列表:

$ git ls-files . ':!b'
a
Run Code Online (Sandbox Code Playgroud)

我可以创建特定文件的存档:

$ git archive HEAD a | tar tf -
a
Run Code Online (Sandbox Code Playgroud)

但我无法创建除特定文件之外的所有文件的存档:

$ git archive HEAD . ':!b' | tar tf -
a
b
Run Code Online (Sandbox Code Playgroud)

在我的真实存储库中,使用特定文件存档的选项不是我的选项,因为它超出了最大命令行参数长度.

我知道我可以.gitattributes通过export-ignore属性存储要排除的文件列表,但列表是动态生成的.我可以自动更改文件,但更改不会在另一次提交之后被提取.

是否有其他调用无需另外提交即可运行?

git git-archive

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

如何从 git diff --no-index 中排除文件和目录

如何从 中排除文件和目录git diff --no-index

例如,我想显示两个目录project1&之间的差异,project2同时忽略它们的顶级.git目录 ( project1/.git& project2/.git) 及其所有.DS_Store文件。

git diff git-diff

6
推荐指数
1
解决办法
806
查看次数

列表提交不涉及特定路径

我需要列出触及源树中的一个路径而不是另一个路径的提交。

D-头

C - 触摸foobar

B - 触碰foo

A - 基线

在 A 和 DI 之间想要一个所有涉及文件夹foo 的 提交列表,除非他们也接触文件夹bar,换句话说,在上面的例子中,我希望看到 B 而不是 C。

我试过了,git rev-list A..D --exclude='bar' -- foo但这仍然给了我 B 和 C。

请指教。

git

5
推荐指数
1
解决办法
410
查看次数

忽略git log -p中的文件

我正在尝试总结我在项目上的工作.问题是我不想在输出中包含测试文件git log --patch.

这些文件位于一个名为的目录中mtest; 但是,该文件夹还包含我想要显示的测试套件代码.测试文件,我想排除,有扩展mscxxml,所以我想基于该过滤器的工作.

我已经看过使'git log'忽略某些路径的更改,但这看起来像是排除了修改文件而不是简单地排除文件的提交.

有没有办法做到这一点?

我已经尝试了Jubobs的答案,它看起来很有效,但令人惊讶的是,即使有过滤器,也会出现2个文件.

我用这个小存储库复制了这个:

mkdir test
cd test
git init
echo 'readme' > README
git add .
git commit -m "Initial commit"

mkdir test2
cd test2
echo 't1' > test1.cpp
echo 't2' > test2.xml
git add .
git commit -m "c2"

echo 't3' > test3.cpp
echo 't4' > test4.xml
git add .
git commit -m "c3"
Run Code Online (Sandbox Code Playgroud)

我注意到创建目录时不会过滤文件.我尝试了以下命令:

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

这导致包含 …

git git-log

4
推荐指数
1
解决办法
1833
查看次数

标签 统计

git ×4

diff ×1

git-archive ×1

git-diff ×1

git-log ×1