听起来像个愚蠢的问题,所以让我解释一下:
我的iOS应用程序项目位于分支'master'上。我创建了一个名为“iOS 7”的分支,并完成了我在该分支上进行iOS 7升级的所有工作。现在我基本上希望'iOS 7'分支成为主分支,这样我就可以回到'master'了。我尝试合并,有太多的冲突,不值得解决它们的麻烦。我现在关心的只是'iOS 7'分支,我不关心其余部分。
显而易见的解决方案就是将.git目录分开,然后重新启动一个新的存储库,从那里我可以使用'iOS 7',但我想知道是否有办法在git中执行此操作。基本上,有些方式可以说,“看,这个分支现在真相,让它成为主分支。忽略当前'掌握'中的任何东西”
编辑:我应该补充一点,我是唯一一个使用这个仓库的人,它只存在于我的Mac本地。没有远程回购。
编辑2:根据我接受的答案,这个问题实际上并不是关于合并,因为没有任何东西被合并,这就是为什么我把'merge'放在引号中。我之所以使用'merge'这个词,是因为这是在将分支中的更改带回主服务器时通常使用的术语。通常 暗示实际合并,我的问题是如何避免合并。接受的答案完美地做到了(正如其他几个答案一样)。
答案 0 :(得分:2)
master
只是另一个分支名称。因此,您可以轻松地重命名您的分支:
git branch -m master master-old
git branch -m "iOS 7" master
答案 1 :(得分:1)
您可以使用策略选项ours
或theirs
告诉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'