如何迁移备份包含git lfs的仓库,包含代码、分支、提交记录

本文详细介绍了如何将包含GitLFS的仓库从一个git服务器迁移到另一个服务器,确保所有提交记录和LFS文件对象完整无误。首先,创建目标服务器上的空仓库,然后使用`git clone --bare`备份原始仓库。接着,通过`git lfs fetch --all`获取LFS文件,`git lfs push --all`推送到新服务器,最后执行`git push --mirror`完成迁移。
摘要由CSDN通过智能技术生成

最近有个迁移仓库的需求,要把某个git服务器上的仓库转移到另一个服务器上

仅域名更新,需要保留原仓库的提交记录

普通的git仓库备份

网上查了一下实现方式非常简单:

假设源仓库的地址是:git@gitlib.threedog.top:threedog/test.git

新仓库的域名是:gitlib.threedog.net

首先,在新的git服务器上创建同名仓库test,空仓库就可以,然后:

git clone --bare git@gitlib.threedog.top:threedog/test.git
cd test.git 
git push --mirror git@gitlib.threedog.net:threedog/test.git

这样,原仓库test.git就完整备份到了新的服务器上

包含gitlfs的仓库

git lfs 是git的一种二进制文件存储机制,主要用于仓库中存在一些较大的二进制文件的场景,可以有效的缩减git仓库体积,加快克隆效率

在一些新版的git客户端,gitlab github服务器上都支持git lfs

但是包含lfs的仓库在通过上述方案备份时,会报这个错误:

remote: Resolving deltas: 100% (187/187), done.
remote: GitLab: LFS objects are missing. Ensure LFS is properly set up or try a manual "git lfs push --all".
Togit@gitlib.threedog.net:threedog/test.git
 ! [remote rejected] dev -> dev (pre-receive hook declined)
 ! [remote rejected] master -> master (pre-receive hook declined)
error: 推送一些引用到 'git@gitlib.threedog.net:threedog/test.git' 失败

这种仓库应该,先现在并提交lfs文件对象,然后再push整个仓库:

git clone --bare git@gitlib.threedog.top:threedog/test.git
cd test.git 
git lfs fetch --all
git lfs push --all git@gitlib.threedog.net:threedog/test.git
git push --mirror git@gitlib.threedog.net:threedog/test.git
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要将本地代码提交Git仓库中的某个指定分支,可以按照以下步骤进行操作: 1. 首先,需要将本地代码库初始化为Git仓库。在本地代码库根目录下运行命令: ``` git init ``` 2. 接着,将需要提交的文件添加到Git暂存区中。在本地代码库根目录下运行命令: ``` git add <file> ``` 其中,`<file>`为需要提交的文件名或路径。 3. 然后,将文件提交Git仓库中。在本地代码库根目录下运行命令: ``` git commit -m "提交说明" ``` 其中,`提交说明`为本次提交的注释说明。 4. 最后,将本地代码库的提交推送到Git远程仓库的指定分支中。在本地代码库根目录下运行命令: ``` git push <remote> <branch> ``` 其中,`<remote>`为Git远程仓库的名称,`<branch>`为需要提交到的指定分支名称。 需要注意的是,在执行`git push`命令之前,需要先将本地代码库与远程仓库进行关联。可以使用以下命令进行关联: ``` git remote add <remote> <url> ``` 其中,`<remote>`为Git远程仓库的名称,`<url>`为远程仓库的URL地址。 ### 回答2: 要将本地代码提交Git仓库中的某个指定分支,可以按照以下步骤进行操作: 1. 首先,在本地计算机上安装并配置好Git。确保在命令行或终端窗口中可以使用git命令。 2. 打开一个命令行或终端窗口,并进入保存有本地代码的项目目录。 3. 使用以下命令将本地代码初始化为一个Git仓库: ``` git init ``` 这将在项目目录中创建一个名为“.git”的隐藏文件夹,作为Git仓库的核心。 4. 确保已经将本地代码保存在正确的分支中。如果需要切换分支,可以使用以下命令: ``` git checkout 分支名 ``` 其中“分支名”是要切换到的分支的名称。 5. 将本地代码的更改添加到暂存区,可以使用以下命令: ``` git add . ``` 这将将所有更改的文件添加到暂存区。如果只想添加某个特定文件的更改,可以将“.”替换为文件名。 6. 接下来,使用以下命令将更改的文件提交Git仓库中的指定分支: ``` git commit -m "提交消息" ``` 其中“提交消息”是对本次提交的简短描述或注释。请根据实际情况自行填写。 7. 最后,使用以下命令将本地分支中的更改推送到Git仓库中的指定分支: ``` git push origin 本地分支名:远程分支名 ``` 其中“本地分支名”是要推送的本地分支的名称,“远程分支名”是Git仓库中要推送到的指定分支的名称。 以上就是将本地代码提交Git仓库中的某个指定分支的基本步骤。请根据实际情况使用适当命令,并根据需要进行其他操作,如克隆和分支合并。 ### 回答3: 要将本地代码提交Git仓库的某个指定分支,可以按照以下步骤操作: 1. 首先,在本地项目的根目录下打开终端或命令提示符。 2. 使用git init命令将该目录初始化为Git仓库,即在项目根目录生成隐藏的.git文件夹。 3. 使用git add命令将要提交的文件添加到暂存区,可以添加单个文件,也可以使用通配符添加多个文件。 4. 使用git commit命令将暂存区的文件提交到本地仓库。可以使用-m选项添加提交说明,例如git commit -m "提交说明"。 5. 如果本地仓库没有远程仓库的链接,可以使用git remote add命令添加远程仓库的链接。例如git remote add origin <仓库链接>,其中origin是远程仓库的别名。 6. 使用git push命令将本地仓库代码推送到指定分支。命令格式为git push <远程仓库别名> <本地分支名>:<远程分支名>,例如git push origin master:feature-branch。 以上步骤执行完成后,本地代码就会被提交到指定分支,并同步到Git仓库中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值