git:合并时如何不删除文件?

时间:2017-01-11 04:28:20

标签: git

当我从删除文件的远程存储库合并更改时,本地副本将被取消链接(如果它没有任何更改)。

如何教git将它们留在磁盘上?

编辑:

我可以在合并之前取消缓存已删除的文件,因此

git diff --name-only -z --diff-filter=D ..origin/master | \
    xargs -0 git rm --cached && \
    git commit -m 'un-cache deleted files'
git merge origin/master

所以这不是问题。我的用户(像往常一样;-))。

因此: 是否可以在没有额外提交的情况下执行此操作? 是否可以阻止删除文件的合并?

3 个答案:

答案 0 :(得分:1)

这对我有用:

git reset -- any_deleted_files
git reset any_deleted_directories
git checkout -- .
git commit -am "resolved merge"

这将删除git完全删除文件的知识。

答案 1 :(得分:0)

Git必须选择一个父母的故事版本。在这种情况下,它选择删除文件,该文件是远程存储库中发生的版本。扮演魔鬼的拥护者,假设您删除了分支中的文件,然后将其推送到远程,以合并到远程分支。您可能希望Git也会从遥控器中删除该文件。所以,这里可能没有一个银弹解决方案。在一种情况下,您认为不良和意外行为可能与另一种情况相反。

如果您点击以下链接,您会找到有关如何添加已删除文件的简明说明。

参考:git merge: Removing files I want to keep!

答案 2 :(得分:0)

一种方法是继续在新分支上提交这些文件。

这些文件对您(以及已经已提交它们的其他人)非常有用。您真正想要做的是文件与他们的文件结合起来。为此,请在新分支上本地提交文件,然后在 git pull后合并该分支