0

我有一个大型代码仓库,一旦编译,就会在 git 源代码树中添加大约 3000 个额外文件(.os、.sos 等),以及数百个其他文件更改(自动生成的文件、权限等)。所以我已经习惯在 every 之前做一个git clean -fand ,以避免我会遇到的大量冲突。git reset --hard HEADpull

我正在尝试将其自动化为一个非常小的脚本,但我找不到任何方法来重定向git clean. 具体来说,我正在做这样的事情:

(在鱼壳中)

set -l linecount ( git clean -n | wc -l )
git clean -f | pv -l -s $linecount

我试过设置pv$PAGER和启用--paginate,没有运气。我尝试了各种管道组合,2>&1 |但无济于事。

任何人都知道如何使这项工作?

4

2 回答 2

1

通常,这将通过显式忽略文件中的.o.so等文件来.gitignore完成

示例文件可能如下所示:

# Ignore compiled objects
*.o
*.so

.gitignore文件应提交到您的存储库,以便其他开发人员可以从中受益。对于您只想在存储库的一个副本上忽略的文件,您可以使用.git/info/exclude,当您push.

创建此文件的一个很好的起点是gitignore.io,它允许您提交您正在使用的语言、系统和工具,并生成一个有用的忽略文件。

如果这些文件已经提交,忽略它们将不起作用。在这种情况下,您有几个选择:

  1. 使用.从存储库中删除已提交的文件git rm --cached。请注意,这会影响其他用户;下次fetch这些文件将从他们的机器中删除。您可能需要仔细协调。

  2. 告诉 Git 假设文件未使用git update-index --assume-unchanged.

于 2014-01-02T14:25:08.713 回答
0

Doh .. 似乎这是用户错误...

pv将输入回显到输出。呃..正确的语法应该是:

git clean -f | pv -l -s $linecount > /dev/null

现在它起作用了!

于 2014-01-02T15:37:38.757 回答