在 GitLab 项目中, 使用了太久的项目会有很多的提交, 项目非常地大, 如何清空项目以前的提交呢? 又能保证现在文件不受影响, 这里提供一个思路及解决方案, 就是使用一个新创建的分支来处理这一情况.
解决方案
克隆一个项目
Git clone SSH://Git@GitLab.demo.com:10022/lake/aa.Git
切换目录
cd aa
创建临时分支
Git checkout --orphan tmp
添加所需要的文件
Git add -A
添加 commit 信息
Git commit -m "clean project"
删除 master 分支
Git branch -D master
更名分支
Git branch -m master
提交分支
Git push -f origin master
第一次使用
会出现以下错误
- To SSH://Git@GitLab. demo.com:10022/lake/aa.Git
- ! [rejected] master -> master (non-fast-forward)
error: 无法推送一些引用到'ssh://git@gitlab. demo.com:10022/lake/aa.git'
提示: 更新被拒绝, 因为您当前分支的最新提交落后于其对应的远程分支.
提示: 再次推送前, 先与远程变更合并 (如'git pull ...'). 详见
提示:'git push --help' 中的'Note about fast-forwards' 小节.
[lake@localhost aa]$ Git push origin master --force
对象计数中: 5, 完成.
Delta compression using up to 8 threads.
压缩对象中: 100% (2/2), 完成.
写入对象中: 100% (5/5), 271 bytes | 0 bytes/s, 完成.
- Total 5 (delta 0), reused 4 (delta 0)
- remote: GitLab: You are not allowed to force push code to a protected branch on this project.
- To SSH://Git@GitLab. demo.com:10022/lake/aa.Git
- ! [remote rejected] master -> master (pre-receive hook declined)
error: 无法推送一些引用到'ssh://git@gitlab. demo.com:10022/lake/aa.git'
可在 GitLab 项目的 Settings -> Repository -> Protected branch -> unprotect
来源: http://www.jianshu.com/p/e23b1b18b62b