git - 如何避免在 git merge 中添加已删除的文件?
问题描述
假设有 2 个 git 分支:master
和dev
. 在dev
我删除foo.txt
. 之后在master
一些更改中添加到foo.txt
. 当我合并master
到时dev
foo.txt
,虽然它已从dev
.
那么有没有办法不重新创建已删除的文件git merge
?
编辑:马特指出这会导致冲突,只需再次添加已删除的文件。所以问题是如何从合并中排除在目标分支中没有对应的文件。
解决方案
如果我正确理解了您的问题,这里的 git log 应该是这样的:
* ff3f8a1 (HEAD -> master) changed text
| * 8a4d7d7 (dev) removed file
|/
* 615d151 initial commit
如果你git merge dev
将分支合并dev
到master
,你最终会遇到合并冲突。这就是文件回来的原因。您必须通过以下任一方式手动解决该冲突:
- 删除文件 (
git rm --force <file>
) - 获取它的远程版本(在已删除的一侧)(
git checkout --theirs <file>
)
git merge --strategy-option=theirs
将无法处理此类冲突(修改/删除)
AFAIK 没有正确的方法来解决没有手动冲突解决方案,但是有一些像这样的 hacky 解决方案可以删除所有无法合并的文件(可能很危险):https ://stackoverflow.com/a/54232519/8541886
推荐阅读
- python - Gunicorn Worker 超时时间戳太大,无法转换为 C _PyTime_t
- c - 如果输入大于 3 的值,函数将永远递归运行
- tsql - 创建用户对话在 SQL Server Management Studio 中不起作用
- mysql - 如何通过 Laravel 表 Type_Vehicle、Mark、Model 表中的雄辩关系进行连接
- powerbi - PowerBI - Power Query/M - 限制列值的字符并添加后缀
- c++ - 如何在 C++ 数学中根据方向获取坐标
- git - Visual Studio:你如何设置你的 git 用户名和密码?
- python - 纸浆中的多种优化解决方案
- php - 如何修复在 Heroku 上找不到的文件?
- html - 在 HTML 中将 CSS 类名包装在括号中有什么意义?