0

我创建了一个包含生产内容的新存储库。我想在我的本地开发环境中拥有这些内容。所以我需要从存储库中获取该内容。我所做的是,在我当地的 master 分支中:

  1. 获取内容(在分支 origin/master 中)

    获取

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

    git merge -X 他们的起源/主人

  3. 提交更改

    git commit -am '合并覆盖表单源/主'

但是当我这样做时

git diff origin/master

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

还有其他方法可以强制 git 覆盖文件我可以尝试,但我想了解我做错了什么。

4

2 回答 2

0

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

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

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

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

于 2013-07-29T11:03:35.077 回答
0

当你这样做时:

git diff origin/master

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

您说您做了一些提交(第 3 步),但您没有将它们推送到远程。因此你会看到变化。

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

git reset origin/master

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

请注意,ti 将删除已提交的更改。

于 2013-07-29T11:00:03.237 回答