我怎么'合并'一个git分支而不实际合并它

时间:2013-10-12 12:46:57

标签: git merge branch

听起来像个愚蠢的问题,所以让我解释一下:

我的iOS应用程序项目位于分支'master'上。我创建了一个名为“iOS 7”的分支,并完成了我在该分支上进行iOS 7升级的所有工作。现在我基本上希望'iOS 7'分支成为主分支,这样我就可以回到'master'了。我尝试合并,有太多的冲突,不值得解决它们的麻烦。我现在关心的只是'iOS 7'分支,我不关心其余部分。

显而易见的解决方案就是将.git目录分开,然后重新启动一个新的存储库,从那里我可以使用'iOS 7',但我想知道是否有办法在git中执行此操作。基本上,有些方式可以说,“看,这个分支现在真相,让它成为主分支。忽略当前'掌握'中的任何东西”

编辑:我应该补充一点,我是唯一一个使用这个仓库的人,它只存在于我的Mac本地。没有远程回购。

编辑2:根据我接受的答案,这个问题实际上并不是关于合并,因为没有任何东西被合并,这就是为什么我把'merge'放在引号中。我之所以使用'merge'这个词,是因为这是在将分支中的更改带回主服务器时通常使用的术语。通常 暗示实际合并,我的问题是如何避免合并。接受的答案完美地做到了(正如其他几个答案一样)。

4 个答案:

答案 0 :(得分:2)

master只是另一个分支名称。因此,您可以轻松地重命名您的分支:

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

答案 1 :(得分:1)

您可以使用策略选项ourstheirs告诉Git自动支持合并的一方(请参阅Merge Strategies)。在您的情况下,如果您在master分支上并想要合并iOS 7分支,请执行以下操作:

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

答案 2 :(得分:1)

您所描述的内容的任何部分都与合并无关。你是唯一的开发者,你只想移动一个分支,完全抛弃它的旧状态?只需删除您的master分支,然后在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的头部),然后将其检出。

答案 3 :(得分:1)

如果你在分行master

git reset --hard 'iOS 7'