gpt4 book ai didi

git - 了解如何处理 Git 中的文件删除

转载 作者:太空狗 更新时间:2023-10-29 14:03:33 26 4
gpt4 key购买 nike

当我的一个推送在 origin/master 上恢复时,我最近遇到了 git 问题,但我留在我的分支机构继续我的功能,直到它准备好进行最后的推送。当我尝试 git pull --rebase ,我的一些本地更改由于还原而被完全删除。但是,通过 pull merge ,我能够推送在 origin/master 上删除的本地文件因为它引发了冲突。

我尝试在本地分支机构重现这一点,但没有成功。我创建了文件 a在分支develop , 并入 master , 已删除文件 a来自 master , 添加文件 bdevelop ,并试图 merge master进入develop .

此时我期待 merge 会在 master 之间产生冲突的删除文件 a并开发现有文件 a , 但它只是删除了开发文件 a就像我的 pull --rebase解决了我原来的问题。为什么?

最佳答案

这是常见行为,已在 the docs 中描述.

首先,为什么您的复制没有产生 merge 冲突

During a merge, the working tree files are updated to reflect the result of the merge. Among the changes made to the common ancestor’s version, non-overlapping ones (that is, you changed an area of the file while the other side left that area intact, or vice versa) are incorporated in the final result verbatim.

同一段落的下一句描述了为什么在不使用 --rebase 的情况下将 origin pull 到您的 master 会产生 merge 冲突:

When both sides made changes to the same area, however, Git cannot randomly pick one side over the other, and asks you to resolve it by leaving what both sides did to that area.

merge 冲突 - 在您的情况下 - 不会创建,因为只有 merge 在一起的双方之一影响了该文件。如果您在将 master merge 到该分支之前更改了 develop 中的文件 a,则会产生 merge 冲突,因为您的 pull 做到了。您更改了在 origin 上删除的文件,这会产生 merge 冲突。

关于git - 了解如何处理 Git 中的文件删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49176010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com