GitHub上传文件:原来技术和耐心都需要升级

GitHub上传文件:原来技术和耐心都需要升级_第1张图片

把数据上传GitHub,就像那种开箱魔咒,你永远不知道里面会出现什么!

 
   
echo "GitHub,你为什么要这样对我?!"

首先,我尝试了网页版上传,谁知道那东西竟然像个挑食的小孩:一次性不让上传超过100个文件,而且每个文件大小不能超过25MB。

 
   
echo "25MB? 你当我上传的是情书吗?!"

不甘心,我又尝试了VS Code的remote repository功能,能打开远程的repo,但当我想上传文件时,它就像是告诉我:“别想太多,哥!”

 
   
echo "VS Code,你也敢抛下我?!"

接下来,我试了GitHub Desktop。小文件?没问题!但大文件?哈,它看起来就像吃了个超大号馒头,难以下咽,多次尝试都在最后一步报错:连接问题。一部分小文件夹就手动了,然后发现了一个文件夹有1G多,大部分是75MB左右的文件,单个文件可以顺利上传,但两个文件一起超过150MB就要报错:连接问题。

 
   
echo "好吧,我知道你有选择性食物中毒。"

一个一个上传?我难道是回到了石器时代?

决定编个shell脚本,一步步把文件push到GitHub上。这事情肯定是交给Chat老师去做的,Chat老师10秒撸完代码告诉我:“老铁,为啥不试试Git LFS?”原来是Git的大文件存储功能!

 
   
git lfs track "大文件"

Chat老师反手就甩了一个代码给我,找到文件夹里>20M的文件用lfs处理。

cd "path/to/source/data"
# Find .csv files larger than 20MB and track them with Git LFS
find . -name "*.csv" -size +20M | while read file; do
    git lfs track "$file"
done

嗯,这下方便多了!接下来,简单的addcommitpush三步曲就搞定!但等等,push的时候怎么回事?好久没用GitHub,现在它变得这么“高级”?不再是Github账号的密码,Chat老师鬼魅一笑说,还要整一个所谓的“personal access token”

 
   
echo "token? 是加密货币吗?!"

经过探索,我终于在GitHub账号(不是repo)设置里的"Developer settings"找到了这个神奇的token。

GitHub上传文件:原来技术和耐心都需要升级_第2张图片

GitHub上传文件:原来技术和耐心都需要升级_第3张图片

 
   
echo "我应该可以回家了吧。。!"

lfs的速度貌似还可以,只不过。。。

GitHub上传文件:原来技术和耐心都需要升级_第4张图片

echo "我要回家!!!!"

大文件(比如一个文件几百M以上)还是选LFS,无论是上传还是下载都会比较快,但同时一批Push多个文件的表现就不太清楚了。。

是的,最后还是用Chat老师刚才10秒撸出来的shell脚本,一个一个搬运的。。

#!/bin/bash


# Directories
SRC_DIR="path/to/source/data"
DEST_DIR="path/to/des/data"




# Navigate to the destination directory
cd "$DEST_DIR" || exit




# Loop through files larger than 10MB in the source directory
find "$SRC_DIR" -type f -size +10M | while read -r file; do
    # Copy the large file to the destination directory
    cp "$file" "$DEST_DIR"




    # Extract the filename for commit message
    FILENAME=$(basename "$file")




    # Add, commit, and push the file to Git
    git add .
    git commit -m "Adding file $FILENAME"
    git push




    # Optional sleep to avoid bombarding the server
    # sleep 10s
done

hmm,那么我的token和username应该保存在哪呢,Chat老师马上开始了他的长篇大论:“我有10种方式可以储存。。。”

我立马点了“闭嘴”,选择了一个最简单的。。

git config credential.helper 'store'

但就是不知道为什么,速度在200多kb,不科学啊。目测是被限速了,因为命令行输出有提示说超过50的推荐用LFS。

ff60b114c9d628f4a4964b66dfe75578.png

echo "还有20个文件,可以写个公众号"

小结,小文件可以选GitHub网页上传;vscode无论是网页版或app版似乎有一些连接的问题,都不推荐;50M以内大文件可以用git或者git桌面版,超过50M的文件使用LFS,如果多个一起上传报错,为了节省去找原因的时间,可以考虑用代码分批用上传。

你可能感兴趣的:(github)