从存储库中获取分支并合并覆盖本地更改,在检查diff时似乎不起作用

时间:2013-07-29 10:55:21

标签: git git-merge

我创建了一个具有完全生产内容的新存储库。我希望在我的本地开发环境中拥有此内容。所以我需要从存储库中获取该内容。我所做的是,在我当地的主分公司:

  1. 获取内容(在分支原点/主页中)

    git fetch

  2. 合并并覆盖我的本地主分支(正如此问题Git: Merging but overwriting changes中所解释的那样)。

    git merge -X the origin / master

  3. 提交更改

    git commit -am'合并覆盖表单origin / master'

  4. 但是当我做的时候

    git diff origin/master
    

    我应该看到没有差异,但我仍然看到它们。有人知道为什么吗?

    other ways to force git overwrite files on pull我可以尝试,但我想了解我做错了什么。

2 个答案:

答案 0 :(得分:0)

当你这样做时:

git diff origin/master

您正在与远程存储库进行比较

你说你做了一些提交(第3步),但你没有把它们推到遥控器上。因此你会看到变化。

如果要将本地更改为与远程相同。然后做:

git reset origin/master

会将本地存储库重置为与远程存储库相同。

请注意,ti会删除已修改的内容。

答案 1 :(得分:0)

“git merge -X theirs”将尝试合并更改而不会发生冲突。如果发生冲突,它将以你的冲突解决它。因此,如果它能够在没有冲突的情况下合并来自上游的更改,您将看到一个版本,它是您和他们的组合。

为了使您的主分支成为origin / master的精确副本,请尝试:

git checkout master
git fetch origin
git pull origin master
git reset --hard origin/master

重置将丢弃主分支上不在origin / master中的任何更改。