我有一个师父和一个开发分支。
我在这两方面都做出了承诺。
我还删除了dev中的一些文件。
我在master中做了其他的承诺,所以这个master分支是最近的。
我的问题是将dev合并到master中不会删除文件。
Git认为这些文件存在于主机中,因此,在合并期间保持它们。
如何合并这两个分支并强制git应用dev中的所有提交?包括删除的文件。
谢谢你的帮助!

最佳答案

当与分支中的更改没有冲突时,合并绝对会删除文件。
如果在合并分支中删除文件,则git不会在合并期间保留这些文件。-尼尔斯
为了证明这一点,我不得不试着重现你的情景。看看这个演示,希望你能看到它是什么,你正在做的不同。
创建新存储库

mkdir test
cd test
git init

已在/test/.git中初始化空git存储库/
创建一些文件并将其添加到主分支
echo one > 1.txt
echo two > 2.txt
git add .
git commit -m "init repo"

[主(根提交)feaa910]初始化回购
2个文件已更改,2个插入(+)
创建模式100644 1.txt
创建模式100644 2.txt
创建新分支并添加/删除一些文件
git checkout -b new

切换到新的分支“new”
echo three > 3.txt
rm 2.txt
git add .
git status

新分支上
要提交的更改:
(使用“git reset head…”取消固定)
删除:2.txt
新文件:3.txt
git commit -m "changes in new"

[新db6b1a0]新
更改了2个文件,1个插入(+),1个删除(-)
删除模式100644 2.txt
创建模式100644 3.txt
在master中提交更多更改
git checkout master

切换到分支“master”
echo update >> 1.txt
git commit -am "update master"

[主机912A520]更新主机
1个文件已更改,1个插入(+)
tree

是的。
——1.txt
-2.txt
验证文件是否仍在新的
git checkout new

切换到“新”分支
tree

是的。
——1.txt
-3.txt
将新合并到主控形状
git checkout master

切换到分支“master”
git merge new master

删除2.txt
通过“递归”策略进行合并。
2.txt 1个-
3.txt 1个+
更改了2个文件,1个插入(+),1个删除(-)
删除模式100644 2.txt
创建模式100644 3.txt
tree

是的。
——1.txt
-3.txt
如您所见,合并后2.txt分支中删除的文件new现在肯定会在master中删除。

关于git - 将旧分支 merge 到master时,Git不会应用已删除的文件。如何告诉Git应用已删除的文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37122124/

10-14 16:14
查看更多