簡體   English   中英

如何在不實際合並的情況下“合並” git分支

[英]How do I 'merge' a git branch without actually merging it

聽起來像一個愚蠢的問題,所以讓我解釋一下:

我的iOS應用程序項目位於分支“ master”上。 我創建了一個名為“ iOS 7”的分支,並在該分支上完成了iOS 7升級的所有工作。 現在,我基本上希望'iOS 7'分支成為master分支,以便我返回到'master'上。 我嘗試合並,並且有太多沖突,解決這些沖突不值得。 我現在只關心'iOS 7'分支,其余的我都不關心。

顯而易見的解決方案是僅對.git目錄進行裝箱並從我在'iOS 7'所在的位置開始使用新的存儲庫,但我想知道git中是否可以執行此操作。 基本上,可以用某種方式說:“看,這個分支現在是事實 ,將它設為master分支。忽略'master'中當前存在的任何內容”

編輯:我應該補充一點,我是使用此存儲庫的唯一人,它僅在Mac上本地存在。 沒有遠程回購。

編輯2:根據我接受的答案,這個問題實際上根本不是關於合並,因為沒有任何東西被合並,這就是為什么我將“合並”放在引號中。 我之所以使用“合並”一詞,是因為這是在將分支中的更改帶回主服務器時通常使用的術語。 通常這意味着實際的合並,我的問題是如何避免合並。 接受的答案可以完美地做到這一點(其他答案也可以)。

master只是另一個分支名稱。 因此,您可以輕松地重命名分支:

git branch -m master master-old
git branch -m "iOS 7" master

您可以告訴Git使用ours theirs的策略選項(請參閱合並策略 )自動選擇合並的一側。 對於您的情況,如果您位於master分支上並想合並iOS 7分支,請執行以下操作:

git merge --strategy-option=theirs "iOS 7"

您所描述的內容與合並沒有任何關系。 您是唯一的開發人員,您只想移動分支,完全放棄其舊狀態? 只需刪除您的master分支,然后在ios7分支的開頭重新創建它ios7

# Make sure we're starting from the correct branch
$ git checkout ios7

# Delete the old 'master' pointer
$ git branch -d master

# Create a new 'master', pointing at the current commit
$ git checkout -b master

最后一條命令創建一個名為master的新分支,該分支指向當前提交( ios7的頭部),然后將其檢出。

如果您是分支master

git reset --hard 'iOS 7'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM