2016-04-26 133 views
1

对于这个特定的项目,我在两个分支“开发”和“主”工作,我一直在做一些关于“开发”和承诺的变化。然后客户告诉我他们不想接受改变。Git - 分支恢复不丢失工作

我需要回去,而不会影响这些变化,因为在此之前我在存储库上进行了其他更改。有没有我失去任何工作的优雅方式做到这一点?

我在想:

  • 分支“发展”,因为它是目前使用此功能
  • 复位“发展”,使以前的变化不是
  • 一旦特点是准备好了,合并回开发

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

masterdevelopnew

新的包含了所有的新功能我不想做现场还

制定包含工作副本。

我跑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

你不'回复这里有任何东西。不要混淆'git revert'命令。重做'你的分支 – nowox

+0

@nowox我确实重置了分支 – Phorce

回答

2

第一件事,第一:你会Git永不松动任何东西,除非你真的想除去一个分支,从reflog除去提交和执行git gc。 ..

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

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

所以,你要创建一个新的分支develop2您的分支复位develop1234567,并将其合并到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 
* | 
|/ 
* 
+0

嗨,这个工作,我已经重置'发展'回到以前的承诺之前的重大变化。但是,它仍然说我落后于 – Phorce

+0

背后是什么? – nowox