linuxgit目录太大
如何更换git托管?
如何更换git托管?
谢邀。
从github,gitlab或者Bitbucket迁移到其它平台的过程中可能遇到不少问题,我大概介绍一下基于git托管平台的迁移方法。
一、要求保留所有的提交记录的迁移方法
1、从旧的托管仓库中克隆一个裸版本库。
git clone –bare _
--bare:克隆一个裸版本库。
裸版本库的名字一般用原来的仓库名加上.git后缀,它不包含工作区,直接就是版本库的内容,包含的文件如下图所示,和正常版本库中.git文件夹的内容差不多。
2、到新的Git服务器上创建一个新项目,比如华为软件开发云配置管理服务。
新仓库地址:
3、将本地裸版本以镜像的方式推送到华为软件开发云仓库中。
git push –
--mirror指定refs/下的所有文件镜像的推送到远程仓库,而不是命名每个ref一一推送。本地更新的refs将被强制更新到远端仓库,本地删除的refs也将强制从远端仓库删除。
因为本地和远端仓库是两个不同的origin,所以如果不选择镜像推送,会产生如下错误:
提示:华为软件开发云默认对master分支开启分支保护,因此推送之前要解除分支保护。
4、删除本地裸版本仓库,src_文件夹。
5、从新的托管服务器上克隆一份代码到本地。
git
二、无需保留提交记录的迁移方法
1、从旧的托管仓库中下载一套代码。仅仅是代码,没有git版本管理相关内容。
2、到新的Git服务器上创建一个新项目。
新仓库地址:
3、git init #在本地代码根目录文件夹下初始化仓库
4、git remote add
5、git pull origin master –rebase #从新托管仓库上拉去已存在的内容
6、git add .
7、git commit
8、git push --set-upstream origin master #关联上游托管仓库并推送旧代码
华为软件开发云地址:
git目录结构详解?
当你通过 git init 创建 git 仓库时, git 就会创建 .git 目录。该目录包含让 git 能够正常工作所需的所有信息。直白点说,如果你不想在项目中继续使用 git ,直接将 .git 目录删除只保留项目文件即可。但是为什么这样做就可以呢?
下面是你第一次提交后 .git 文件夹的样子:
├── HEAD
├── branches
├── config
├── description
├── hooks
│ ├──
│ ├──
│ └── ...
├── info
│ └── exclude
├── objects
│ ├── info
│ └── pack
└── refs
├── heads
└── tags
HEAD
后面再讲。
config (配置)
该文件包含你的仓库配置,比如远程的 url ,你的邮箱和用户名等。每次你在控制台使用 git config... 都会对这里产生影响。
description(描述)
供 gitweb ( github 的一种前身) 使用,显示仓库的描述。
hooks (钩子)
这是一个有趣的特性。Git 提供了一套脚本,可以在每个有意义的 Git 阶段自动运行。这些被称为钩子的脚本可以在提交 (commit)、变基 (rebase)、拉取 ( pull ) 操作的前后运行。脚本命预示着它的执行时机。如我们可以编写 pre-push 的作为钩子,进行推送代码前的检查。
info (信息)
你可以将不想被 git 管理的文件记录到 .gitignore 文件中。排除文件的意思是不想共享这个文件。例如你不想共享你的 IDE 自定义配置,将其添加到 .gitignore 文件中即可