Git - 分支恢复而不会丢失工作

时间:2016-04-26 15:51:52

标签: git

对于这个特殊项目,我在两个分支机构工作"开发"和#34;主人"我一直在做一些事情" develop"并承诺改变。然后客户告诉我他们并不想接受改变。

我需要返回,而不会影响这些更改,因为我在存储库生效之前要对存储库进行其他更改。如果没有我失去任何工作,有没有一种优雅的方式来做到这一点?

我在想:

  • 分支"开发"正如目前使用此功能一样
  • 重置"开发"以便之前的更改不在
  • 功能准备就绪后,合并回开发

编辑: 我现在有三个分支:

masterdevelop new

New包含我不想生活的所有新功能

Develop包含工作副本。

我跑了git reset --hard [NUMBER]

这已将develop还原到new

上的更改之前的某个位置

我在develop上做了一些小修改并运行了:

git add .

git commit -m "Fix - Contact form"

git push origin develop

但得到了:

! [rejected] develop -> develop (non-fast-forward) Updates were rejected because the tip of your current branch is behind

1 个答案:

答案 0 :(得分:2)

首先要做的事情是:除非你真的想要删除分支,删除Git的提交并执行reflog,否则永远不会丢失git gc的任何内容} ...

如果我了解你的情况,你就有了这个:

* 3456789 (master)
| * 2345678 What I dont want yet (develop)
| * 1234567 What I want
* |
|/
*

因此,您要创建一个新分支develop2,将分支develop重置为1234567,并将其合并到master

$ git checkout -b develop2 develop
$ git checkout develop
$ git reset --hard 1234567
$ git merge master

你最终得到了这个:

* 5678912 (master, develop)
|\ 
* | 
| | * 2345678 What I dont want yet (develop2)
| |/
| * 1234567 What I want
* |
|/
*