【问题标题】:git: How to not remove files when merging?git:合并时如何不删除文件?
【发布时间】:2017-05-25 18:17:19
【问题描述】:

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

如何教 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

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

因此: 是否可以在没有额外提交的情况下做到这一点? 是否可以阻止删除文件的合并?

【问题讨论】:

    标签: git


    【解决方案1】:

    这对我有用:

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

    这完全消除了 git 对文件删除的了解。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        这些文件对您(以及已经提交它们的其他人)很有用。您可能真正想做的是将您的文件与他们的文件合并。为此,在新分支上本地提交文件,然后在您git pull 之后合并该分支

        【讨论】:

        • 嗯,有时你不想合并任何东西。一个例子是使用 git 作为一个主目录,它有一堆易失的机器本地配置文件。我想从 git 中删除它们,但 not 从我从中提取此存储库的其他系统中删除。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-14
        • 1970-01-01
        • 2015-08-08
        • 2012-07-05
        • 2011-09-11
        • 1970-01-01
        相关资源
        最近更新 更多