2013-04-23 74 views
28

我有兩個分支。分期和Beta。分期中有代碼(包括文件),我根本不需要。我怎樣才能使Beta完全覆蓋Staging,以便這些文件或代碼都不會從Staging合併到Beta中。如何覆蓋,而不是合併,一個遠程分支到另一個分支?

我看到一些人建議這樣做:

git checkout staging 
git merge -s ours beta 

但我不相信預先存在,文件將是一個「代碼衝突」,因此不會被刪除。我錯了嗎?如果我是對的,我將如何實現這一目標?

+0

從'beta'提前'暫停'嗎?你們兩個分支之間的關係究竟是什麼? – Rerito 2013-04-23 14:23:49

+0

他們都有一些未來的數據。但我不想在舞臺上做任何事情。 – Trip 2013-04-23 14:50:18

回答

29

您可以簡單的刪除staging和基於beta重新創建:

git branch -D staging 
git checkout beta 
git branch staging 
+1

我也想過這個,但是我們沒有足夠的關於分支的信息。我認爲OP不會問這個問題,如果他只需要刪除他的分支 – Rerito 2013-04-23 14:27:00

+0

@Rerito:我不同意。有時候人們看不到簡單的解決方案。 – 2013-04-23 14:28:54

+0

刪除分支會破壞它的歷史嗎? – Trip 2013-04-23 14:53:55

8

我建議如果你改變了主意,你只需將其重命名。

git branch -m staging staging_oops 
git checkout beta 
git branch staging 

如果你實在無法忍受周圍具有額外的分支:

git branch -D staging_oops 
22

如果你不在乎關於staging舊的歷史,你可以重新創建:

git checkout beta 
git branch -f staging 

如果你在意關於staging舊的歷史,那麼事情s得到更多的樂趣:

git checkout staging  # First, merge beta into staging so we have 
git merge -s theirs beta # a merge commit to work with. 

git checkout beta   # Then, flip back to beta's version of the files 

git reset --soft staging # Then we go back to the merge commit SHA, but keep 
          # the actual files and index as they were in beta 

git commit --amend   # Finally, update the merge commit to match the 
          # files and index as they were in beta. 
+0

這會刪除最近在暫存中創建的不需要的文件? – Trip 2013-04-23 14:51:40

+0

@Trip由於它將索引重置爲「beta」中的內容,因此就Git而言,任何不在beta中的內容都應該被刪除。 – Amber 2013-04-23 14:55:39

+2

不幸的是'git merge -s theirirs'在Git的新版本中不可用,所以這不會像書面一樣工作。 – James 2015-11-19 16:58:17

0

如果分期的歷史不會是一個問題,你可以簡單地做到這一點。

git checkout staging 
git reset --hard beta 

只要記住分期的歷史將不復存在上面的命令後 分期將有你的測試版分公司的工作。

相關問題