我使用git并使用master / develop / feature分支。
主人只有README文件。并且,不幸的是,我意外地将我正在工作的功能分支合并到了master而不是develop分支。并删除了功能分支。
我对git知之甚少,对于该怎么做我很困惑。但我认为正确的做法是将功能分支(已经删除)上的更改合并到开发中,并将合并还原为主服务器。但是如果我已经删除了功能分支怎么做呢?
答案 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)
将主人员恢复到之前提交的简便方法:
CMD: