我已从项目中删除了一些文件(a.py
和b.py
)并提交了我的更改。我的队友撤回了更改并且程序退出了错误。
经过一番研究后我们发现了问题:
Git删除了a.py
和b.py
个文件,但编译的.pyc
文件仍然存在并导致问题 - 程序使用旧源并出错。
.pyc
中忽略了 .gitignore
个文件。
解决此类问题的最佳解决方案是什么?
更新:我知道如何忽略文件 - 不管它有什么问题。问题是如何避免上述情况?
答案 0 :(得分:2)
当.pyc
文件较新时,Python仅重新编译.py
个文件。如果您的版本控制使用原始编辑的日期而不是上次更改更改的日期,那么在具有多个用户的项目中,这可能会出现问题。
简单地说,如果项目中有多个开发人员,请准备偶尔手动删除.pyc文件:
find . -name "*.pyc" -delete
将在Linux上完成这项工作。
正如评论中所指出的,您可以在post-merge
或post-checkout
挂钩中包含该内容,以便它自动运行。
答案 1 :(得分:2)
您只需要浏览并删除 .pyc 文件即可。 python解释器总是使用 .pyc 文件,除非 .py 文件更新(在这种情况下它重新编译 .pyc 文件)。
一个好的解决方案是在工作流程中包含一个清除步骤,在运行程序之前删除所有 .pyc 文件:
find . -name "*.pyc" -delete
答案 2 :(得分:0)
在.git / hooks / post-checkout中添加此post-checkout脚本:
git diff --name-status $1 $2 -- '*.py' | grep ^D | sed 's/py$/pyc/' | xargs rm -vf
翻译:获取结帐删除的.py文件,并删除(删除)相应的pyc文件。
答案 3 :(得分:-1)
答案 4 :(得分:-1)
解决方案是清理工作目录并在每次使用之前或至少在每次更新已检出的修订版之后将其重置为prestine状态。
尝试类似的东西(并注意它会删除未跟踪的文件):
git clean -f
另请参阅:How to remove local (untracked) files from the current Git working tree?