【问题标题】:Do a Git pull to overwrite local changes执行 Git 拉取以覆盖本地更改
【发布时间】:2011-09-09 14:17:37
【问题描述】:

肯定有关于这个的帖子,但我实际上做了一个提交,因为我认为这是正确的做法。

所以,我有两个存储库,一个开发和一个生产。我不得不在生产中编辑一些东西,因为它是一个紧急的错误修复,现在我有三个文件在生产中比在开发中更新。

我在生产中提交了三个文件并尝试拉取,但它告诉我存在合并错误。我尝试将新文件复制并粘贴到开发服务器并重试整个过程,但没有成功。现在我确定我需要的是开发(因为我复制并粘贴到其中)并已提交,那么我如何拉取和覆盖冲突的文件?


---- 跟进@Seths 的回复

好的,我想我确实需要改写我的问题 :) 我有三个存储库。一项开发,一项在 GitHub,一项生产。 通常为了更新生产,我只是从开发推送到 GitHub,git pull origin master(从 GitHub 到生产),它可以工作。

不幸的是,我在生产环境中更改了文件而没有存储。尝试拉取时如何强制覆盖而不是合并?

【问题讨论】:

    标签: git versioning commit pull git-pull


    【解决方案1】:

    如果你想用远程分支 origin/foo 的内容完全替换你的本地分支 foo:

    git fetch origin
    git checkout foo
    git reset --hard origin/foo
    

    如果您想做其他事情,请改写您的问题。但是,我可能会将生产 Git 存储库添加为远程,然后合并实时更改,而不是您尝试的任何内容。

    【讨论】:

    • 好的,我想我确实需要改写我的问题 :) 我有 3 个 repos。一个开发人员,一个在 github 和一个生产环境 通常为了更新生产环境,我只需从开发人员推送到 github,git pull origin master(从 gi​​thub 到生产环境)就可以了。不幸的是,我在没有存储的情况下更改了生产文件。尝试拉取时如何强制覆盖而不是合并?
    • @user786463:我的回答到底有什么问题?它似乎完全按照您的要求进行(“foo”的值可能等于“master”)。完成后记得接受正确答案。
    • 工作就像一个魅力!谢谢你。我不知道用“foo”替换什么。
    • 为了进一步说明用什么替换foo,您希望使用您的分支名称。此示例将引用名为 foo 的分支。
    【解决方案2】:

    你需要先从生产推送到 GitHub:

    git push origin yourbranch --force
    

    这支部队将确保 GitHub 拥有生产所拥有的一切。

    以下是您可以做的可能性:

    您需要将更改提取到部署存储库中的开发存储库中。此时您将看到历史正在分支(通过git log --all --graphgitk --all)。

    git fetch origin
    

    您现在可以变基或合并以使您的最新更改紧随在生产存储库中所做的更改。这将使您能够在以后将更改推送到部署存储库。

    冲突是有原因的。查看它们并解决它们,添加并提交。

    如果您希望通过采用生产端的内容来解决冲突,您可以使用“recursive theirs”策略:

    git merge -s recursive -Xtheirs production/yourbranch
    

    如果您不想从您这边进行任何更改,请正常合并,但是当在冲突处停止时,请获取合并的另一侧,添加并提交。

    git merge production/yourbranch
    git checkout production/yourbranch -- .
    git submodules update #this is optional and can be skipped if you don't have any submodules
    git add -A
    git commit
    

    现在从开发到 GitHub 的后续推送和在生产中从 GitHub 拉取都可以工作。

    您可以重置分支,但前提是您不想保留对开发存储库所做的任何更改。

    git reset --hard production/yourbranch
    

    【讨论】:

      猜你喜欢
      • 2020-09-16
      • 2013-03-24
      • 1970-01-01
      • 2012-12-20
      • 2016-12-11
      • 2016-03-27
      • 2015-10-01
      • 2013-08-31
      • 2013-08-31
      相关资源
      最近更新 更多