git:我偶然将功能分支合并到master而不是develop

时间:2017-11-06 14:27:27

标签: git merge version-control

我使用git并使用master / develop / feature分支。

主人只有README文件。并且,不幸的是,我意外地将我正在工作的功能分支合并到了master而不是develop分支。并删除了功能分支。

我对git知之甚少,对于该怎么做我很困惑。但我认为正确的做法是将功能分支(已经删除)上的更改合并到开发中,并将合并还原为主服务器。但是如果我已经删除了功能分支怎么做呢?

3 个答案:

答案 0 :(得分:4)

请注意,我在此假设您没有push编辑合并的结果。如果你有,这仍然可以工作,但需要“强制推动”,这反过来会影响使用回购的其他人(参见git rebase文档中的“从上游rebase恢复”;因为这基本上就是这种情况创建)。但如果你没有,你不需要担心任何问题。所以:

首先要重新创建功能分支。我假设它只存在于本地。 (如果在合并之前已经推送它,您可能可以从远程恢复;但无论哪种方式,下面的方法都可以。)所以

git checkout master
git checkout -b feature
git reset --hard HEAD^2

现在,功能分支将恢复到合并提交的“第二个父级” - 它应该是合并之前的位置。

接下来,您需要从master删除合并。

git checkout master
git reset --hard HEAD^

就是这样;您已准备好将该功能合并到开发分支中。

答案 1 :(得分:1)

首先使用git checkout master结帐主分支,并从主分支创建一个名为feature的新分支:

git checkout -b feature

再次检出主分支,并运行以下命令:

git log

这应该给出你在master分支上提交的列表。您需要滚动提交列表,以复制要还原到的提交ID。假设id为advcf456yhn8,那么您需要编写命令:

git reset --hard advcf456yhn8

这将还原所有更改&恢复到特定提交ID的实际内容。

现在您已经创建了一个分支feature,您可以将其合并到develop中。只需git checkout develop&使用feature合并git merge feature分支。

此外,通过运行以下命令,您可以获得整个提交历史记录:

git reflog

答案 2 :(得分:1)

将主人员恢复到之前提交的简便方法:

  1. 克隆您的主存储库
  2. 如果您在git上使用任何GUI,请使用选项"还原"选择特定的提交ID
  3. 一旦恢复,请承诺并推动掌握。
  4. CMD:

    1. git clone master
    2. git reset --hard HEAD ^
    3. git commit -m""
    4. git push