【问题标题】:How to merge a branch without deleting local files?如何在不删除本地文件的情况下合并分支?
【发布时间】:2017-03-30 01:16:07
【问题描述】:

假设我有一个带有主分支 master 和 3 个文件的存储库:

  • fileA [已追踪]
  • fileB [已追踪]
  • fileC [已追踪]

我创建了一个新分支test 并删除了fileB

现在我想回到master并将test合并到其中,但我不希望fileB被删除,只是从git中“未跟踪”:

  • fileA [已追踪]
  • fileB [未追踪]
  • fileC [已追踪]

有没有办法做到这一点?

【问题讨论】:

  • 一种方法是:git cherry-pick -ntestHEAD 提交到master,解决任何合并冲突,然后使用git reset fileB 取消对fileB 的删除。跨度>
  • 我从未使用过git-cherry-pick。我试过这个,但无法让它工作。这发生在我身上好几次了,我总是“手动”处理它。最后我使用了幼稚的方法,这似乎有效,我将在答案中解释以供将来自我参考。

标签: git merge git-merge


【解决方案1】:

“天真的”方法如我预期的那样奏效。

首先,我将文件夹的内容复制到一个临时位置。然后我进行合并。然后我将旧内容复制到合并的内容上,最后丢弃更改。

要运行的语句是(在存储库根目录,在分支master):

git archive -o /tmp/temporary_repo_archive.zip HEAD
git merge test
unzip /tmp/temporary_repo_archive.zip
git reset --hard
rm /tmp/temporary_repo_archive.zip

【讨论】:

    猜你喜欢
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-20
    • 1970-01-01
    相关资源
    最近更新 更多