执行Git拉取以覆盖本地更改

执行Git拉取以覆盖本地更改,git,versioning,commit,pull,git-pull,Git,Versioning,Commit,Pull,Git Pull,当然也有关于这方面的帖子,但我确实做了一个承诺,因为我认为这样做是正确的 所以,我有两个存储库,一个是开发库,一个是生产库。我不得不在生产中编辑一些东西,因为这是一个紧急的错误修复,现在我有三个文件在生产中比在开发中更新 我在生产中提交了三个文件并尝试拉取,但它告诉我存在合并错误。我试着将新文件复制粘贴到开发服务器上,然后重试整个过程,但没有成功。现在我确定我需要的是开发(因为我复制并粘贴到了开发中)和提交,那么我如何才能提取和覆盖冲突文件呢 ----@Seths回复的后续行动 好吧,我想我确

当然也有关于这方面的帖子,但我确实做了一个承诺,因为我认为这样做是正确的

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

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


----@Seths回复的后续行动


好吧,我想我确实需要改写我的问题:) 我有三个存储库。一个开发,一个在GitHub,一个生产。 通常,为了更新生产,我只需从开发推送到GitHub,
git拉动原始主机(从GitHub推送到生产),它就可以工作了


不幸的是,我在没有隐藏的情况下更改了生产文件。尝试拉取时,如何强制覆盖而不是合并?

如果要用远程分支源/foo的内容完全替换本地分支foo:

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

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

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

git push origin yourbranch --force
部队将确保GitHub拥有生产所拥有的一切

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

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

现在,您可以重新设置基础或合并,以使您的最新更改在生产存储库上所做更改之后进行。这将使您能够在以后将更改推送到部署存储库

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

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
如果您希望通过采取生产方面的措施来解决冲突,您可以使用“递归”策略:

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

好吧,我想我确实需要改写我的问题:)我有3份回购协议。一个开发人员,一个在github中,一个产品通常是为了更新产品,我只需从开发人员推送到github,git拉到原始主机(从github到产品),就可以了。不幸的是,我在没有隐藏的情况下更改了生产文件。在尝试拉取时,如何强制覆盖而不是合并?@user786463:我的答案到底出了什么问题?它似乎完全符合您的要求(对于“foo”的值可能等于“master”)。当你完成时,记得接受正确的答案。工作得很有魅力!非常感谢。我不知道用“foo”替换什么。要进一步说明用什么替换
foo
,您需要使用分支机构的名称。此示例将引用名为
foo
的分支。