2016-04-26 150 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