在复制Git存储库时,使用git lfs migrate将其迁移到GIT-LSF

首先

Git真的很难,总是不知道该怎么做而苦恼。
因为在工作中需要进行复制到另一个存储库的操作,但遇到了问题,所以我将调查结果总结起来。

我想要将源存储库全部复制到GitHub存储库(包括提交信息和标签)。

    • コピー元リポジトリにバイナリファイルが入っているがLSFを使用していな状態でCommtされている。

 

    • コピー先リポジトリはLSFが使える。

 

    「git clone –mirror」しただけではリポジトリのコピーが出来ない。(100MB以上のファイルはCommitできない旨のエラーが発生してCommitできない。)

通过使用「git lfs migrate」命令将所需的二进制文件重新注册到LSF中,可以实现对仓库的复制。

前提 tí) – precondition

    • コピー元リポジトリからコピー先のGitHubリポジトリへ丸ごとコピーされます。

 

    • Commit情報やtagも反映されます。

 

    この操作をするとコピー元の情報で上書きされます。(注意!!)

以下是一个例子:

    • コピー元: https://XXXXXXXX/git/XXXXXXXXXXX/hehehe.git

コピー先: https://github.com/XXXXXXXXXXXXXXXXXX/new-hehehe.git

请参考下列资料

 

执行

我会在合适的地方创建一个名为work的文件夹。

使用”–mirror”选项克隆git库从源文件。

$ git clone --mirror https://XXXXXXXX/git/XXXXXXXXXXX/hehehe.git
Cloning into bare repository 'hehehe.git'...
remote: Enumerating objects: 32, done.
remote: Counting objects: 100% (32/32), done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 32 (delta 10), reused 0 (delta 0)19.00 KiB/s
Unpacking objects: 100% (32/32), 140.21 MiB | 415.00 KiB/s, done.

切换到克隆的目录中。

$ cd hehehe.git/

通过 git lfs migrate info 进行预先调查

进入克隆的[存储库名称].git文件夹后,调查当前状态。检查要在LSF中注册的文件扩展名。

$ git lfs migrate info --everything
migrate: Sorting commits: ..., done.
migrate: Examining commits: 100% (5/5), done.
*.weights 157 MB  1/1 files(s)    100% <<===これをLSFに移行
*.py    23 KB   6/7 files(s)     86%
*.png   15 KB   1/1 files(s)    100% <<===これをLSFに移行
*.pyc   11 KB   3/3 files(s)    100%
*.md    2.9 KB  3/3 files(s)    100%

执行 git lfs migrate import。

使用「–include」参数指定要迁移到Git LFS的文件类型,执行git lfs migrate import命令。

$ git lfs migrate import --include="*.weights,*.png,*.jpg" --everything
migrate: Sorting commits: ..., done.
migrate: Rewriting commits: 100% (5/5), done.
  master        XXXXXXXXXXXXXXXXXXXX -> XXXXXXXXXXXXXXXXXXXXXXXXXXX
migrate: Updating refs: ..., done.

为保持整合性,整理本地文件缓存。

$ git reflog expire --expire-unreachable=now --all && git gc --prune=now
Enumerating objects: 33, done.
Counting objects: 100% (33/33), done.
Delta compression using up to 8 threads
Compressing objects: 100% (25/25), done.
Writing objects: 100% (33/33), done.
Building bitmaps: 100% (5/5), done.
Total 33 (delta 10), reused 20 (delta 6), pack-reused 0

使用 –mirror 参数将本地仓库推送到 GitHub.com

$ git push --mirror https://github.com/XXXXXXXXXXXXXXXXXX/new-hehehe.git
Uploading LFS objects: 100% (2/2), 157 MB | 0 B/s, done.
Enumerating objects: 33, done.
Writing objects: 100% (33/33), 13.64 KiB | 13.64 MiB/s, done.
Total 33 (delta 0), reused 0 (delta 0), pack-reused 33
remote: Resolving deltas: 100% (10/10), done.
To https://github.com/XXXXXXXXXXXXXXXXXX/new-hehehe.git
 + XXXXXXX...XXXXXXXX master -> master (forced update)

我会检查GitHub仓库,确保所有更改都已反映出来。

因为在存储库的根目录中添加了 .gitattributes 文件,所以要确保通过–inlude指定的文件名和模式能够正常记录。
历史记录也应该被修改,以便.gitattributes被认为是最早提交的。

广告
将在 10 秒后关闭
bannerAds