提问这个问题的方法可能不止一种,所以这里是问题的解释.我正在做主人并且做了一些事情,然后我决定把这项工作搁置一边.我支持了一些提交,然后在我开始我的垃圾工作之前分支.实际上这很好用,我刚才有一个不同的分支作为我的主要开发分支.我想知道我怎么能改变一切,所以我再次为大师工作,但它没有我的垃圾工作,并说工作是在另一个分支.
可以通过某些方式询问/解决这个问题:如何将我的主分支重命名为其他内容,然后将其他内容重命名为master?如何备份master然后导致我已经备份的所有提交都在另一个分支上?
感谢所有(快速)答案!他们都很好.
我有一个git repo,里面有一些非常大的二进制文件.我不再需要它们,我不关心是否能够检查早期提交的文件.因此,为了减少repo大小,我想从历史中删除二进制文件.
在网络搜索之后,我得出结论,我最好的(仅?)选项是使用git-filter-branch
:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch big_1.zip big_2.zip etc.zip' HEAD
Run Code Online (Sandbox Code Playgroud)
到目前为止,这似乎是一个好方法吗?
假设答案是肯定的,我还有另外一个问题需要解决.该git的手册中有这样的警告:
警告!重写的历史将具有所有对象的不同对象名称,并且不会与原始分支会聚.您将无法在原始分支的顶部轻松推送和分发重写的分支.如果您不知道完整的含义,请不要使用此命令,并且无论如何都要避免使用它,如果简单的单个提交就足以解决您的问题.(有关重写已发布历史记录的详细信息,请参阅git-rebase(1)中的"从上游重新恢复"部分.)
我们的服务器上有一个远程仓库.每个开发人员都会推动并从中拉出.基于上面的警告(以及我对git-filter-branch
工作原理的理解),我认为我不能git-filter-branch
在本地副本上运行然后推送更改.
所以,我暂时计划完成以下步骤:
这听起来不错吗?这是最好的解决方案吗?