如何在git中删除合并结果

如何在git中删除合并结果,git,Git,我来自一个mercurial的背景,在那里我可以只更新到某个提交,在那里我的代码将完全一样,任何更改都将被删除。 我试图在git中做同样的事情,但没有成功,我做了以下几件事: Naguib@Naguib MINGW64 /d/.Net omitted/omitted (deploy) $ git checkout staging Switched to branch 'staging' Your branch is up-to-date with 'origin/staging'. Nagui

我来自一个mercurial的背景,在那里我可以只更新到某个提交,在那里我的代码将完全一样,任何更改都将被删除。 我试图在git中做同样的事情,但没有成功,我做了以下几件事:

Naguib@Naguib MINGW64 /d/.Net omitted/omitted (deploy)
$ git checkout staging
Switched to branch 'staging'
Your branch is up-to-date with 'origin/staging'.

Naguib@Naguib MINGW64 /d/.Net omitted/omitted (staging)
$ git fetch
Password for 'https://naguibihab@github.com':

Naguib@Naguib MINGW64 /d/.Net omitted/omitted (staging)
$ git merge preprod
Already up-to-date.
在这一点上,我意识到我想以另一种方式合并,签出prepod并将staging合并到其中,但首先我想确保prepod工作正常。 因此,我:


我想让prepod与origin/prepod保持同步,在远程分支中拥有完全相同的代码。如何操作?

要将分支
prepod
设置为与
origin/prepod
中的相同,只需执行以下操作:

git checkout preprod
git reset --hard origin/preprod

注意:这将导致您丢失当前在这两个分支之间的68个提交。

您的本地分支位于origin/prepod之前,因此有两个不同的方向,这取决于您所说的与远程分支“完全相同的代码”的含义。您处于位于远程分支前面的状态(在
git状态下通过
ahead by X committes
消息可见)。你有两条主要途径(还有一大堆我不想探讨的子选项):

  • 更新remote以赶上您的本地分支

    git推送原点预印本

  • 重置本地分支以恢复到远程分支

    git重置--硬头~68

  • 其中68是位于远程分支之前的提交数注意:这将删除这些提交!使用
    git checkout-b backup将它们添加到另一个分支,或者运行
    git stash
    ,如果您现在想将它们保存到一旁

    无论哪种方式,此时您都将与上游保持一致

    git checkout preprod
    git reset --hard origin/preprod