繁体   English   中英

git将分支内容复制到master

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM