对于这个特殊项目,我在两个分支机构工作"开发"和#34;主人"我一直在做一些事情" develop"并承诺改变。然后客户告诉我他们并不想接受改变。
我需要返回,而不会影响这些更改,因为我在存储库生效之前要对存储库进行其他更改。如果没有我失去任何工作,有没有一种优雅的方式来做到这一点?
我在想:
编辑: 我现在有三个分支:
master
,develop
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
答案 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
* |
|/
*