[英]git copy branch content to master
我有一个git项目,稳定版本始终存储在master分支中。 一段时间以来,我在一个单独的分支v20中研究版本2.0。
现在,我决定发布它,并将所有内容再次复制到master分支。 我不想合并它,因为有数百个相互冲突的更改,并且许多文件需要人工干预。
我只想制作一个v20分支的快照并将其放到master中,而不影响旧的历史记录,而无需重新设置基准(因此其他用户也不会受到影响)。 只是为了使它看起来像一个新提交,它带来了所有更改。
起始状态:
master branch --------- v20 branch
| |
master files --------- v20 files
| |
master_history v20_history
目标状态:
master branch --------- v20 branch
| |
v20 files -------- v20 files
| |
master_history v20_history
+ commit from v20
有现成的git方法吗?
您正在描述git merge -s theirs
的结果,该结果不存在,并且Git的主要作者之一坚持认为它不应该存在 : 从该链接引用(这些不是我的话):
嘿,现在您需要做一些阅读工作;-)
在
-Xours
描述-Xours
和-Xtheirs
时,我尽量不要听起来太消极,但实际上我认为“ -s他们的”更为糟糕。 这样就可以丢弃所做的事情(也许是因为另一方的解决方案比黑客更好),但这可以通过以下操作更轻松,更轻松地完成:$ git reset --hard origin
有人可能会说:“但是,通过'合并-他们的',我也可以保留所做的事情”。 重置只是丢弃我所做的事情。
这种逻辑也是有缺陷的。 您可以改为:
$ git branch i-was-stupid $ git reset --hard origin
如果您真的想保留失败记录。
与上面的“重置原点,丢弃或搁置失败的历史记录”相比,“-s他们的问题”存在的一个大问题是,您的进一步开发所基于的“主”历史记录将永久保留失败的废话。您做了“ -s他们的”。 希望随着时间的推移,您将成为一名更好的程序员,并且您最终可能会拥有一些值得与您的master分支顶端的世界共享的东西。 但是,一旦发生这种情况,您就不能让主分支被上游拉动,因为更广阔的世界根本不会对您之前的错误感兴趣。
您可以随意不同意Git人士并继续使用以下答案: 是否有“他们的”版本的“ git merge -s ours”? 请注意,公认的答案根本不是-s theirs
的。 Michael R的答案是正确的 ,使用git read-tree
在--no-commit
合并期间切换索引。
mayo的评论中的方法也很好, jthill对另一个SO问题的回答也是正确的。
您的案例与上述案例有所不同,但实际上,您可以重命名“坏”分支,然后将“好”分支重命名为master
并从那里继续。 您“下游”的任何人都需要进行相同的重命名,因此需要考虑多个方面。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.