__gitignore未解决pycache_uuuu合并冲突

2024-06-16 11:35:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将一个开发分支合并回主分支。我在两个文件中都运行了git rm '*.pyc',这是我的gitignore(从here复制):

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
#   For a library or package, you might want to ignore these files since the code is
#   intended to run in multiple environments; otherwise, check them in:
# .python-version

# pipenv
#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
#   However, in case of collaboration, if having platform-specific dependencies or dependencies
#   having no cross-platform support, pipenv may install dependencies that don't work, or not
#   install all needed dependencies.
#Pipfile.lock

# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# pytype static type analyzer
.pytype/

# Cython debug symbols
cython_debug/

然而,当我

git checkout master
git merge version3ascii

version3ascii是我的开发分支机构的名称)

我收到以下错误消息:

CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_subprocess.cpython-37 2.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_subprocess 3.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_subprocess 3.py left in tree.
CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_ssl.cpython-37.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_ssl 4.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_ssl 4.py left in tree.
CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_ssl.cpython-37 2.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_ssl 3.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_ssl 3.py left in tree.
CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_scipy_signal.cpython-37 2.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_scipy_signal 4.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_scipy_signal 4.py left in tree.
CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_scipy_signal 2.cpython-37.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_scipy_signal 3.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_scipy_signal 3.py left in tree.
CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_responses.cpython-37 2.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_responses 4.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_responses 4.py left in tree.
CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_responses.cpython-37.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_responses 3.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_responses 3.py left in tree.
CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_re.cpython-37.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_re 4.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_re 4.py left in tree.
CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_re.cpython-37 2.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_re 3.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_re 3.py left in tree.
CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_pytest.cpython-37.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_pytest 4.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_pytest 4.py left in tree.
CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_pytest.cpython-37 2.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_pytest 3.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_pytest 3.py left in tree.
CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_pkg_resources 2.cpython-37.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_pkg_resources 4.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_pkg_resources 4.py left in tree.
CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_pkg_resources.cpython-37.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_pkg_resources 3.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_pkg_resources 3.py left in tree.
CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_numpy_random_mtrand.cpython-37.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_numpy_random_mtrand 4.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_numpy_random_mtrand 4.py left in tree.
CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_numpy_random_mtrand.cpython-37 2.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_numpy_random_mtrand 3.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_numpy_random_mtrand 3.py left in tree.
CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_numpy_ndarray.cpython-37.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_numpy_ndarray 4.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_numpy_ndarray 4.py left in tree.
CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_numpy_ndarray.cpython-37 2.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_numpy_ndarray 3.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_numpy_ndarray 3.py left in tree.
CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_numpy_core_umath 2.cpython-37.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_numpy_core_umath 4.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_numpy_core_umath 4.py left in tree.
CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_numpy_core_umath.cpython-37.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_numpy_core_umath 3.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_numpy_core_umath 3.py left in tree.
CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_numpy_core_numerictypes.cpython-37.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_numpy_core_numerictypes 2.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_numpy_core_numerictypes 2.py left in tree.
CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_http 2.cpython-37.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_http 4.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_http 4.py left in tree.
CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_http.cpython-37 2.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_http 3.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_http 3.py left in tree.
CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_curses.cpython-37.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_curses 4.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_curses 4.py left in tree.
CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_curses.cpython-37 2.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_curses 3.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_curses 3.py left in tree.
CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_collections 2.cpython-37.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_collections 4.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_collections 4.py left in tree.
CONFLICT (rename/delete): venv/lib/python3.7/site-packages/astroid/brain/__pycache__/brain_collections.cpython-37.pyc deleted in version3ascii and renamed to venv/lib/python3.7/site-packages/astroid/brain/brain_collections 3.py in HEAD. Version HEAD of venv/lib/python3.7/site-packages/astroid/brain/brain_collections 3.py left in tree.
Automatic merge failed; fix conflicts and then commit the result.

然后,当我运行git mergetool时,我得到:

git mergetool
Merging:
venv/lib/python3.7/site-packages/astroid/brain/brain_collections 3.py
venv/lib/python3.7/site-packages/astroid/brain/brain_collections 4.py
venv/lib/python3.7/site-packages/astroid/brain/brain_curses 3.py
venv/lib/python3.7/site-packages/astroid/brain/brain_curses 4.py
venv/lib/python3.7/site-packages/astroid/brain/brain_http 3.py
venv/lib/python3.7/site-packages/astroid/brain/brain_http 4.py
venv/lib/python3.7/site-packages/astroid/brain/brain_numpy_core_numerictypes 2.py
venv/lib/python3.7/site-packages/astroid/brain/brain_numpy_core_umath 3.py
venv/lib/python3.7/site-packages/astroid/brain/brain_numpy_core_umath 4.py
venv/lib/python3.7/site-packages/astroid/brain/brain_numpy_ndarray 3.py
venv/lib/python3.7/site-packages/astroid/brain/brain_numpy_ndarray 4.py
venv/lib/python3.7/site-packages/astroid/brain/brain_numpy_random_mtrand 3.py
venv/lib/python3.7/site-packages/astroid/brain/brain_numpy_random_mtrand 4.py
venv/lib/python3.7/site-packages/astroid/brain/brain_pkg_resources 3.py
venv/lib/python3.7/site-packages/astroid/brain/brain_pkg_resources 4.py
venv/lib/python3.7/site-packages/astroid/brain/brain_pytest 3.py
venv/lib/python3.7/site-packages/astroid/brain/brain_pytest 4.py
venv/lib/python3.7/site-packages/astroid/brain/brain_re 3.py
venv/lib/python3.7/site-packages/astroid/brain/brain_re 4.py
venv/lib/python3.7/site-packages/astroid/brain/brain_responses 3.py
venv/lib/python3.7/site-packages/astroid/brain/brain_responses 4.py
venv/lib/python3.7/site-packages/astroid/brain/brain_scipy_signal 3.py
venv/lib/python3.7/site-packages/astroid/brain/brain_scipy_signal 4.py
venv/lib/python3.7/site-packages/astroid/brain/brain_ssl 3.py
venv/lib/python3.7/site-packages/astroid/brain/brain_ssl 4.py
venv/lib/python3.7/site-packages/astroid/brain/brain_subprocess 3.py

Deleted merge conflict for 'venv/lib/python3.7/site-packages/astroid/brain/brain_collections 3.py':
  {local}: created file
  {remote}: deleted
Use (c)reated or (d)eleted file, or (a)bort? a
Continue merging other unresolved paths [y/n]? n

有人知道这里发生了什么吗

我不记得重命名或删除过任何venv/lib/*文件

(这是Heroku web应用程序的一部分-即,该应用程序当前正在运行master。不确定这是否相关。)


Tags: toinpynumpyvenvlibpackagessite
1条回答
网友
1楼 · 发布于 2024-06-16 11:35:02

首先,请注意.gitignore内容本身对合并没有任何直接影响。这是因为git merge合并了提交的内容,这些内容已经提交,无法更改。他们有自己的文件。地球上或其他任何地方的任何力量都无法改变它们。您的git merge正在合并一些现有的提交,以准备进行新的提交

I have run git rm '*.pyc' in both files ...

你的意思是“在两种情况下”吗?“在两个文件中”在这里没有什么意义

I don't recall renaming or deleting any venv/lib/* files.

如果venv/lib包含*.pyc个文件,并且您运行了上述git rm,那么您将从工作树和Git索引中删除这些*.pyc文件。一旦文件超出Git的索引,那么现有.gitignore中的现有*.pyc项就可以生效,防止将来的*.pyc文件通过工作树进入Git的索引。随后的提交将缺少这些*.pyc文件

我将只看一下这里的第一个冲突,并将长队分开,仅用于发布目的:

CONFLICT (rename/delete):
venv/lib/python3.7/site-packages/
astroid/brain/__pycache__/brain_subprocess.cpython-37 2.pyc
deleted in version3ascii and renamed to
venv/lib/python3.7/site-packages/
astroid/brain/brain_subprocess 3.py
in HEAD. ...

这一切真正意味着:

  • 合并基提交包含一个名为.../__pycache__/brain_subprocess.cpython-37 2.pyc的文件
  • version3asciicommit缺少这个文件;及
  • HEAD版本缺少此文件,但有一个名为^{文件

新名称的HEAD内容与旧名称下的合并基内容相似,足以使git merge决定在合并基提交和HEAD提交之间进行更改的人必须重命名(可能还修改)文件的合并基副本

合并基提交更有可能包含这些*.pyc文件所有这些venv/*文件,并且*.pyc文件在两个分支提示提交(version3ascii分支提示和当前分支提示)中都被正确删除。但是,一些venv/*文件存在于HEAD中,但可能不存在于version3ascii(否则Git可能会在那里检测到类似的重命名)。似乎.py文件也不是.pyc文件的重命名和修改副本,Git的相似性检测器只是错误地将其检测为重命名

前进的道路有很多。例如:

  • 如果两个分支提示提交中都不应该有venv/*个文件,您可以只进行两个缺少这些文件的新分支提示提交。现在Git找不到类似的文件来声明重命名,这让Git相信不真实的事情

  • 如果不想进行新的提交,可以中止此合并并使用扩展参数(-X参数)重新运行,该参数将重命名阈值设置得更高或完全关闭重命名检测器,例如git merge -Xfind-renames=99将其限制为99%的相似文件,而不是50%的相似文件

  • 或者,您可以简单地手动调整Git索引中的所有内容。事实是,合并已停止,出现合并冲突。现在您的工作是安排正确的合并结果。这些不需要与三个输入提交中的任何一个匹配,尽管正确的合并可能以某种方式使用所有三个输入。由于git merge已经完全停止,因此当您最终运行git merge continuegit commit以完成合并时,您现在可以完全控制其索引中的内容。您可以运行git rm -r .删除所有内容,从整个cloth构建所有新文件,以及git add

(可能其他选项中的一个比nuke and pave one更有用,即使你真的选择了nuke and pave remove and re create,你也可能不想像这样批量生产。)

相关问题 更多 >