NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
## `git clone --depth=1` 之后获取完整仓库 ``` shallow clone 浅克隆经常在一些大型仓库中很有用——不用花费大量时间去clone一个完整的仓库,仅仅checkout出来某个分支(如master)的最新N次递交: git clone --depth 1 https://github.com/openwrt/openwrt.git 由于clone的内容非常少,因此速度就大大提升了。查看git log也只有最后一次递交记录而已。 问题来了 shallow clone对于快速clone代码很有用,但是clone出来的代码不会有远程仓库的tags,也不会有远程仓库的其他分支,如果需要切换tag或者切换分支应该怎么办呢? 取回tag 这个很简单 git fetch --tags 重新把远程的tag fetch到本地的origin仓库即可,然后在git tag就会看到tag了,之后再用checkout就可以了。 取回分支 这个就不是那么好办了,因为这个要求shallow clone必须转换为deep clone。如果你不想删掉现在的仓库目录重新clone的话,需要做下面两步: git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*' git fetch --unshallow 其中,第一步git config是容易被忽视的,shallow clone之后,remote.origin.fetch的值是+refs/heads/master:refs/remotes/origin/master,所以会发现怎么fetch都没有其他分支。 ``` ### 删除所有历史提交记录 ``` 删除.git文件夹可能会在您的git存储库中出现问题。如果要删除所有提交历史记录,但将代码保持在其当前状态,则可以非常安全地执行以下操作: >结帐 git checkout – orphan latest_branch >添加所有文件 git add -A >提交更改 git commit -am“commit message” >删除分支 git branch -D master >将当前分支重命名为master git branch -m master >最后,强制更新您的存储库 git push -f origin master PS:这不会保持你的旧提交历史 ```