1 回答

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
首先,請(qǐng)注意,.gitignore
內(nèi)容本身永遠(yuǎn)不會(huì)對(duì)合并產(chǎn)生任何直接影響。這是因?yàn)楹喜⒘?em>commitsgit merge
的內(nèi)容,這些內(nèi)容已經(jīng)提交并且無(wú)法更改。他們擁有他們擁有的文件。地球上或其他任何地方的任何力量都無(wú)法改變它們。您正在合并一些現(xiàn)有的提交,準(zhǔn)備進(jìn)行新的提交。git merge
我已經(jīng)
git rm '*.pyc'
在這兩個(gè)文件中運(yùn)行過...
您的意思是“在兩次提交中”嗎?“在兩個(gè)文件中”在這里沒有什么意義。
我不記得重命名或刪除任何
venv/lib/*
文件。
如果venv/lib
包含*.pyc
文件,并且您運(yùn)行了上面的命令,您將從工作樹和 Git 索引中git rm
刪除這些文件。*.pyc
一旦文件脫離 Git 的索引,現(xiàn)有*.pyc
條目中的現(xiàn)有條目.gitignore
就會(huì)生效,從而防止未來(lái)的*.pyc
文件通過工作樹進(jìn)入 Git 的索引。隨后的提交將缺少這些*.pyc
文件。
我將在這里查看第一個(gè)沖突,并僅出于發(fā)布目的而分開長(zhǎng)行:
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. ...
這一切真正意味著:
合并基礎(chǔ)提交包含一個(gè)名為 的文件
.../__pycache__/brain_subprocess.cpython-37 2.pyc
;提交
version3ascii
缺少該文件;和該
HEAD
版本也缺少此文件,但有一個(gè)名為.../astroid/brain/brain_subprocess 3.py
并且HEAD
該新名稱的內(nèi)容與舊名稱下的合并基礎(chǔ)內(nèi)容相似,足以決定在git merge
合并基礎(chǔ)提交和提交之間進(jìn)行更改的人HEAD
必須重命名(并且可能還修改)了合并基礎(chǔ)副本文件。
合并基礎(chǔ)提交似乎更有可能具有這些*.pyc
文件和所有這些venv/*
文件,并且這些*.pyc
文件在兩個(gè)分支提示提交(version3ascii
分支提示和當(dāng)前分支提示)中都被正確刪除。但是,某些venv/*
文件存在于 中HEAD
,但可能不存在version3ascii
(否則 Git 可能會(huì)在那里檢測(cè)到類似的重命名)。.py
該文件似乎也不是該文件的重命名和修改后的副本.pyc
,Git 的相似性檢測(cè)器只是將其誤檢測(cè)為重命名。
前進(jìn)的道路有很多。例如:
如果
venv/*
任何一個(gè)分支提示提交中都不應(yīng)該有任何文件,您可以只進(jìn)行兩個(gè)缺少這些文件的新分支提示提交?,F(xiàn)在,Git 不會(huì)找到看起來(lái)相似的文件來(lái)聲稱重命名,這會(huì)讓 Git 相信不真實(shí)的事情。如果您不想進(jìn)行新的提交,則可以中止此合并并使用擴(kuò)展參數(shù)(
-X
參數(shù))重新運(yùn)行,該擴(kuò)展參數(shù)將重命名閾值設(shè)置得更高或完全關(guān)閉重命名檢測(cè)器,例如git merge -Xfind-renames=99
將其限制為 99%相似的文件,而不是 50% 相似的文件。或者,您可以簡(jiǎn)單地手動(dòng)調(diào)整 Git 索引中的所有內(nèi)容。事實(shí)是,合并因合并沖突而停止?,F(xiàn)在您的工作就是安排獲得正確的合并結(jié)果。這些不需要與三個(gè)輸入提交中的任何一個(gè)匹配,盡管正確的合并可能以某種方式使用所有三個(gè)輸入。由于
git merge
已完全停止,您現(xiàn)在可以完全控制最終運(yùn)行git merge --continue
或git commit
完成合并時(shí)索引中的內(nèi)容。您可以運(yùn)行git rm -r .
以刪除幾乎所有內(nèi)容,從整個(gè)布構(gòu)建所有新文件,并且git add
.
(可能其他選項(xiàng)之一比“核武器鋪路”更有用,即使您確實(shí)選擇“核武器鋪路”(刪除并重新創(chuàng)建),您也可能不想像這樣批量進(jìn)行這。)
添加回答
舉報(bào)