Jas*_*son 1549 git merge git-branch
可能重复:
使当前Git分支成为主分支
我的Git存储库中有两个分支:
master
seotweaks
(最初创建master
)我创建seotweaks
的目的是迅速将其合并回来master
.然而,那是三个月前,这个分支的代码是13个版本master
.
它已经有效地成为我们的工作主分支,因为现在所有的代码master
或多或少已经过时了.
我知道非常糟糕的做法,经验教训.
你知道如何master
用那些替换分支的所有内容seotweaks
吗?
我可以删除所有内容master
并合并,但这不是最佳实践.
erg*_*sys 2661
你应该能够使用"我们的"合并策略用seotweaks覆盖master如下:
git checkout seotweaks
git merge -s ours master
git checkout master
git merge seotweaks
Run Code Online (Sandbox Code Playgroud)
结果应该是你的主人现在基本上是seotweaks.
(-s ours
简称--strategy=ours
)
从关于"我们的"战略的文档:
这会解析任意数量的头,但合并的结果树始终是当前分支头的树,实际上忽略了所有其他分支的所有更改.它旨在用于取代侧枝的旧发展历史.请注意,这与递归合并策略的-Xours选项不同.
Zel*_*luX 453
那么使用git branch -m将master分支重命名为另一个分支,然后将seotweaks分支重命名为master?像这样的东西:
git branch -m master old-master
git branch -m seotweaks master
git push -f origin master
Run Code Online (Sandbox Code Playgroud)
这可能会删除origin master中的提交,请在运行前检查您的origin master git push -f origin master
.
Von*_*onC 73
您可以在远程重命名/删除master,但如果很多人将他们的工作建立在远程主分支上并在本地仓库中拉出该分支,这将是一个问题.
这可能不是这里的情况,因为每个人似乎都在分支' seotweaks
'.
在这种情况下你可以:
git remote --show可能无法正常工作.(做一个git remote show
检查你的遥控器如何在你的本地仓库中宣布.我将假设' origin
')
(关于GitHub,house9评论:"我必须再做一个步骤,点击Admin
GitHub上的' '按钮并设置' Default Branch
'到'除了' master
' 之外的东西,然后把它放回去")
git branch -m master master-old # rename master on local
git push origin :master # delete master on remote
git push origin master-old # create master-old on remote
git checkout -b master seotweaks # create a new local master on top of seotweaks
git push origin master # create master on remote
Run Code Online (Sandbox Code Playgroud)
但是又一次:
reset --hard
他们的本地主人到他们将要获取的远程/主分支,并忘记他们当前的主人.mho*_*815 31
由于seotweaks
最初是作为分支创建的master
,因此将其合并为一个好主意.但是,如果您的某个分支机构不是真正的分支机构,master
或者您的历史记录是如此不同以至于您只是想要删除master
分支机构以支持您正在进行的新分支,那么您可以执行此操作这个:
git push [-f] origin seotweaks:master
Run Code Online (Sandbox Code Playgroud)
如果您收到此错误,这将特别有用:
! [remote rejected] master (deletion of the current branch prohibited)
Run Code Online (Sandbox Code Playgroud)
并且您没有使用GitHub并且无法访问"管理"选项卡来更改远程存储库的默认分支.此外,这不会导致因删除master而遇到的停机时间或竞争条件:
git push origin :master
Run Code Online (Sandbox Code Playgroud)
我发现这是最好的方法(我的服务器有问题,不允许我删除)。
在托管origin
存储库的服务器上,从存储库内的目录中键入以下内容:
git config receive.denyDeleteCurrent ignore
Run Code Online (Sandbox Code Playgroud)
在您的工作站上:
git branch -m master vabandoned # Rename master on local
git branch -m newBranch master # Locally rename branch newBranch to master
git push origin :master # Delete the remote's master
git push origin master:refs/heads/master # Push the new master to the remote
git push origin abandoned:refs/heads/abandoned # Push the old master to the remote
Run Code Online (Sandbox Code Playgroud)
返回托管origin
存储库的服务器:
git config receive.denyDeleteCurrent true
Run Code Online (Sandbox Code Playgroud)
感谢博客文章的作者http://www.mslinn.com/blog/?p=772
归档时间: |
|
查看次数: |
538186 次 |
最近记录: |