70

不小心,我已将 .pyc 文件推送到主存储库。现在我想删除它们,但我做不到。有什么方法可以直接从 Bitbucket 网站删除它们?

4

10 回答 10

161
  1. 使用删除 .pyc文件git rm *.pyc。如果这不起作用,请使用git rm -f *.pyc
  2. 犯罪 git commit -a -m 'all pyc files removed'
  3. git push
  4. .pyc在将来的提交中,您可以通过创建.gitignore文件来忽略文件
于 2014-09-29T10:17:59.300 回答
24

不,您不能直接从 BitBucket 界面删除它们,但您可以在本地结帐中删除它们,并且find ./ -type f -name '*.pyc' -exec git rm {} \;(或简单地 git rm 每个 pyc 文件一个接一个)。然后提交/推送您的更改。

最后,为了避免再次犯同样的错误,您可以在 repo 的根目录下创建一个文件,并将其命名为“.gitignore”,内容如下:

*.pyc
*~
*.swp

*~ 和 ~.swp 是其他经常被意外推送的通常被遗忘的文件类型。请参阅 gitignore 上的 github 文档https://help.github.com/articles/ignoring-files(以及他们的 .gitignore 文件库以获得一些不错的默认值)。

于 2014-09-29T10:11:45.850 回答
17

这对我有用,

find . -name '*.pyc' | xargs -n 1 git rm --cached
于 2017-06-28T08:05:16.383 回答
17
git rm *.pyc --cached
git commit -a -m'remove pyc from index'
git push

PS:我看到了问题的日期,但是这个解决方案看起来更好,恕我直言。也许它会帮助某人......

于 2016-02-14T14:35:33.013 回答
4

要删除所有.pyc文件,请使用git rm -rf *.pyc

然后将 .gitignore 文件添加*.py[co]到您的.gitignore文件中。(这将防止 .pyc 和 .pyo 文件在未来的提交中被提交)

于 2016-10-27T10:47:15.387 回答
4

我使用了 simeg 的解决方案,但也想删除大量错误添加到分支的 *.pyc 文件。我使用 awk 递归地从缓存中删除它们。

git status | awk '{if($1=="modified:" && $2!=".gitignore") ; system("git rm --cached "$2)}'

然后,我从本地删除了文件

find . -name *.pyc -delete
于 2016-08-28T00:11:41.597 回答
1

因为在默认的 Bitbucket 中,repo 中没有 .gitignore 文件,所以你可以这样做:

  1. 您可以创建本地 .gitignore(不应推送)并将 *.pyc 添加为一行;
  2. 您可以在 Github 存储库中复制 .gitignore 并在此文件中添加 *.pyc 作为一行!您可以推送它或将其保存在本地仓库中!
于 2015-06-01T04:39:44.507 回答
1

使用PyDev 进行 eclipse 的快速方法。

转到项目的 PyDev Package Explorer 并执行以下操作:


  • 右键单击+ Pydev /删除 *.pyc *.pyo 和 *$py.class 文件

    将弹出一个窗口,告诉您已删除了多少文件。

可选:将您的更改提交给团队/服务器:

  • 右键+团队/提交

在提交窗口中,您应该看不到任何可添加的 .pyc,因为我们删除了它们。此外,如果您之前提交了此类文件,那么您现在应该能够提交它们的“删除”。

===> 您的本地和服务器存储库现在没有 *.pyc *.pyo 和 *$py.class 文件 :)

于 2016-06-27T10:44:12.233 回答
0

一个有趣的单线:

git status | grep pyc | sed -e 's/ new file: //g' | xargs -I {} git rm --cached {}

于 2016-10-20T00:18:26.123 回答
0

另一个有趣的班轮删除所有 pyc 文件。

寻找 。-name '*.pyc' -exec git rm {} \;

不要忘记按照其他答案中的步骤提交和添加 gitignore。

于 2017-06-03T06:35:56.370 回答