我正在尝试将开发分支合并回master。我在两个文件中都运行了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网络应用程序的一部分-即该应用程序当前正在master
上运行。不确定是否与此相关。)
答案 0 :(得分:1)
首先,请注意.gitignore
内容本身永远不会对合并产生任何直接影响。这是因为git merge
合并了已提交且不能更改的 commits 的内容。他们有他们拥有的文件。地球上或其他任何地方的电力都无法改变它们。您的git merge
正在合并一些现有的提交,以准备进行新的提交。
我在两个文件中都运行过
git rm '*.pyc'
...
您是说“两次提交”吗? “在两个文件中”在这里毫无意义。
我不记得要重命名或删除任何
venv/lib/*
文件。
如果venv/lib
包含*.pyc
个文件,并且您运行了以上git rm
,则将从工作树和Git索引中删除这些*.pyc
文件。文件超出Git索引后,然后在现有*.pyc
中现有的.gitignore
条目即可生效,从而防止以后的*.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
的文件; version3ascii
提交缺少该文件;和HEAD
版本的 也缺少此文件,但是有一个名为.../astroid/brain/brain_subprocess 3.py
的 new 文件,该新名称的HEAD
内容与旧名称下的合并基础内容相似,足以使git merge
决定谁在合并基础提交和{{1}之间进行更改} commit必须已重命名(也许还修改了)文件的基于合并的副本。
似乎合并的基本提交包含这些HEAD
文件和所有这些*.pyc
文件,并且venv/*
文件已被正确删除在两个分支提示提交中(*.pyc
分支提示和当前分支提示)。但是,version3ascii
中存在一些venv/*
文件,但HEAD
中可能没有文件(否则,Git可能会在那里检测到类似的重命名)。 version3ascii
文件不是.py
文件的重命名和修改后的副本,而且Git的相似性检测器只是将其误检测为重命名,这似乎也很可能。
前进的道路很多。例如:
如果任何.pyc
文件都不应该在任一分支提示提交中,则可以进行两个缺少这些文件的新分支提示提交。现在,Git不会找到外观相似的文件作为重命名,这使Git相信不正确的事情。
如果您不想进行新的提交,则可以中止此合并并使用扩展参数(venv/*
参数)重新运行,该参数将重命名阈值设置得更高或关闭重命名检测器,例如-X
,将其限制为99%相似的文件,而不是50%相似的文件。
或者,您可以简单地手动调整Git索引中的所有内容。事实是,合并因合并冲突而停止。现在,您要做的是安排正确合并结果。尽管正确的合并可能以某种方式使用了所有三个输入,但是这些不需要与三个输入提交中的任何一个匹配。由于git merge -Xfind-renames=99
已完全停止,因此您现在可以完全控制 ,当您最终运行git merge
或{ {1}}完成合并。您可以运行git merge --continue
删除所有内容,从整个布料中构建所有新文件,然后git commit
。
(其他选项之一可能比“ nuke-and-pave”选项更有用,即使您确实进行了“ nuke-pave”的操作,也要删除并重新创建,但是您可能不想这样做)这样批发。)