是否有可能在Git中合并而不在合并分支上?

时间:2011-04-13 20:07:22

标签: git merge

今天我正在使用Git,我发生了一些我不知道如何处理的事情。

我在分支development上,我git fetch获得了新的origin/master。我想将origin/master合并到master,最后签出更新的master。通常,我会这样做:

git checkout master
git pull

但是有一个问题;当前签出的分支development有一个.gitignore,其中包含许多旧master没有的文件。旧master版本控制了这些文件。所以Git不会让我签出master,因为这些文件会被覆盖。

我不知道该怎么做,所以我只是简单地检查了origin/master

如果有办法将origin/master合并到master而不查看master,我认为这样可以拯救我。 (这是一个快速合并,所以Merge-Fail不是一个选项。)

我该怎么办?

2 个答案:

答案 0 :(得分:5)

完全合并需要工作树来解决冲突。

如果您知道合并是快进的,则可以使用git update-ref

示例:

git update-ref -m "Fast-forward merge" refs/heads/master refs/remotes/origin/master

不要只做git update-ref master,因为它会在.git/而非.git/refs/heads/中创建“主”(refs/remotes/origin/master可缩写为origin/master

答案 1 :(得分:1)

在这种情况下,我通常会从工作树中删除所有新忽略的文件,因此checkout不会再覆盖它们。 git clean可以帮助您。您还可以查看-f的{​​{1}}或-m选项以了解其他方法。