Git清空远程仓库与提交记录

2019年6月24日 0 条评论 447 次阅读 0 人点赞

背景

目前通过Git进行版本控制的软件源代码托管服务平台主要有github、gitlab、gitee等,相对于其他平台使用gitlab的公司偏多。一般情况下leader不会给我们添加删除仓库的权限,所以大多时候想要清理一个仓库还是有些困难。正常情况下一个远程仓库会一直使用,不会涉及到清空仓库和清空评论的,除非:

  1. 远程仓库由于历史原因存在一些乱七八糟的文件;
  2. 远程仓库中由于某次失误将生产环境中的账号密码进行了上传;
  3. 远程仓库为测试仓库,需求不一样测试代码也不同,需要同步更新但是又不希望展示此前相关代码和提交记录;

新建测试仓库

测试仓库一共有三个分支分别是master,zhangsan_dev,common_dev,添加四个文件并提交五条commits为本文后续操作提供实验条件。

文章将介绍两种方式来清空远程仓库(remote repository)与历史提交记录(commits),不管采用哪种方式都建议操作之前删除master以外的其他分支。

解锁分支保护

需要特别注意的是:清空远程仓库和commit信息的过程中需要强推到master分支,需要暂时解除master分支保护,否则gitlab禁止push:

清空远程仓库与提交记录

基于新分支清空远程仓库

1.新建分支

master为基础创建一个名为target的新分支(新分支名字就定义为target而不是模糊举例),使用git checkout --orphan新建的分支是一个无历史提交记录的新分支。

2.添加文件

3.提交变更

4.删除master本地分支

5.重命名target为master分支

6.强制更新远程仓库

从WebUI上可以看到远程仓库已经被清空,commit同时变成了一条符合预期。

基于原分支清空远程仓库

1.删除所有文件

将远程仓库clone到本地后,需要删除本地仓库所有文件并将变更提交到远程仓库,这一步只会清空仓库并不会对提交记录产生影响。

2.推送变更记录

3.初始化.git并新增文件

4.提交变更清空记录

上述方式同样可以清空远程仓库和历史commit,效果和第一种是一样的,实际工作中可以根据实际情况决定采用哪种方式。

其他问题

1.There is no tracking information for the current branch.

参考资料

勇敢,和生活的艰难无关。

文章评论(0)