今天我正在使用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不是一个选项。)
我该怎么办?
答案 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
选项以了解其他方法。