当前位置: 首页 > news >正文

WSL文件如何上传到GitHub

本人配置:Ubuntu 20.04 WSL2,其他的Ubuntu 操作方法一致

第 1 步:在 WSL 中安装和配置 Git

首先,你需要确保你的 Ubuntu 系统里安装了 Git,并进行基本的用户信息配置。

  1. 打开你的 Ubuntu 20.04 WSL 终端。

wsl

        2.更新软件包列表:

sudo apt update

        3.安装Git 

sudo apt install git

        4.配置  GitHub 用户名和邮箱

git config --global user.name "你的GitHub用户名"
git config --global user.email "你的GitHub注册邮箱"

第 2 步:配置 SSH 密钥连接 GitHub

为了安全地将代码推送到 GitHub,我们推荐使用 SSH 密钥进行认证。这样就不用每次都输入用户名和密码了。

  1. 生成新的 SSH 密钥:

    在终端里输入以下命令,然后一路按回车键(Enter)即可。这会在默认路径创建一个新的 SSH 密钥。

    ssh-keygen -t rsa -b 4096 -C "你的GitHub注册邮箱"
    
  2. 将 SSH 密钥添加到 ssh-agent:

    ssh-agent 是一个在后台运行的程序,用于管理你的密钥。

    eval "$(ssh-agent -s)"
    ssh-add ~/.ssh/id_rsa
    
  3. 获取你的 SSH 公钥:

    这个公钥需要被添加到你的 GitHub 账户中。使用以下命令可以显示并复制它。

    cat ~/.ssh/id_rsa.pub
    

    复制终端里输出的所有内容,它通常以 ssh-rsa 开头,并以你的邮箱结尾。

  4. 在 GitHub 网站添加 SSH 公钥:

    • 登录你的 GitHub 账户。
    • 点击右上角的头像,选择 Settings (设置)。
    • 在左侧菜单中,点击 SSH and GPG keys (SSH 和 GPG 密钥)。
    • 点击 New SSH key (新建 SSH 密钥)。
    • Title (标题) 可以随意填写,例如 “My WSL Key”。
    • Key (密钥) 的文本框里,粘贴你刚刚复制的公钥内容。
    • 最后,点击 Add SSH key (添加 SSH 密钥)。
  5. 验证 SSH 连接:

    在你的 WSL 终端里输入以下命令,测试是否可以成功连接到 GitHub。

    ssh -T git@github.com
    

    当你看到类似 “Hi [你的用户名]! You've successfully authenticated...” 的信息时,就代表配置成功了!

可能会出现以下内容,属于正常现象,直接输入yes即可
 

Are you sure you want to continue connecting (yes/no/[fingerprint])?

第 3 步:在 GitHub 上创建新的仓库

现在,你需要在 GitHub 网站上为你的项目创建一个远程仓库 (Repository)。

  1. 登录 GitHub,点击右上角的 “+” 号,选择 New repository (新建仓库)。
  2. Repository name (仓库名称):给你的项目起一个名字,例如 my-first-project
  3. Description (描述):可以简单描述一下你的项目(可选)。
  4. 选择 Public (公开) 或 Private (私有)。公开仓库任何人都能看到,私有仓库只有你自己或你授权的人能看到。
  5. 点击 Create repository (创建仓库)。

创建成功后,页面会跳转到一个显示仓库地址的页面。请找到并复制 SSH 格式的地址,它看起来像这样:git@github.com:你的用户名/你的仓库名.git

也可直接手动输入

第 4 步:上传你的项目代码

假设你的项目代码位于 WSL 的一个文件夹里,例如 ~/my-project

  1. 进入你的项目文件夹:

    cd ~/my-project
    

    如果你的项目文件夹还不存在,可以创建一个:mkdir ~/my-project && cd ~/my-project。然后将你的代码文件放入这个文件夹。

  2. 初始化本地 Git 仓库:

    这个命令会在当前文件夹创建一个 .git 的隐藏文件夹,用于跟踪你的代码变更。

    git init
    
  3. 将所有文件添加到暂存区:

    使用 . 代表当前目录下的所有文件。

    git add .
    
  4. 提交你的第一次更改:

    -m 后面跟着的是本次提交的说明信息,例如 “Initial commit” (首次提交)。

    git commit -m "Initial commit"
    
  5. 关联你的本地仓库和远程 GitHub 仓库:

    将下面命令中的地址替换成你刚才在 GitHub 上复制的 SSH 地址。

    git remote add origin git@github.com:你的用户名/你的仓库名.git
    
  6. 将代码推送到 GitHub:

    -u 参数会将你的本地主分支 main(或 master) 和远程的 origin 仓库关联起来,以后推送就只需要输入 git push 即可。

git push -u origin main

现在,刷新你在 GitHub 上的仓库页面,你就能看到你的项目代码已经成功上传上去了!

希望这个详细的步骤能帮助到你。祝你编程愉快!

---------------------------------更新 后续如果更新文件夹,如何再次上传-----------------------------------------

一旦你的本地项目和 GitHub 仓库建立了连接(就像我上面提到的),后续的同步更新会变得非常简单。

只需要遵循 “添加 -> 提交 -> 推送” 这个核心流程。

假设你已经在本地的项目文件夹里修改了代码,或者添加/删除了文件。请按照以下步骤操作:

第 1 步:打开终端并进入项目目录

首先,确保你的 WSL 终端在你的项目文件夹内。

# 请替换成你自己的项目文件夹路径
cd ~/my-project 

第 2 步:查看文件状态 (可选)

这是一个好习惯,可以让你清楚地看到哪些文件被修改了、哪些是新增的。

git status

这个命令会列出所有变动的文件,通常红色表示 “已修改” 或 “未跟踪(新文件)”。

第 3 步:添加变更到暂存区

你需要告诉 Git,你希望将哪些文件的变更包含在下一次的提交中。

# 这个命令会将当前目录下所有的变更(包括新增、修改、删除)都添加到暂存区
git add .

如果你只想添加某一个特定的文件,也可以指定文件名:

git add 文件名

第 4 步:提交变更

“提交”就像是为你的项目拍一张快照,并附上一句说明,记录你这次都做了什么。

git commit -m "在这里写上有意义的更新说明"

重要: -m 后面的说明信息应该简明扼要地描述你这次的更新内容,例如:

  • git commit -m "修复了用户登录的bug"
  • git commit -m "增加了文章发布功能"
  • git commit -m "更新了README文档"

第 5 步:推送到 GitHub

最后一步,就是将你本地的“快照”(提交)推送到 GitHub 的远程仓库,让两边保持同步。

git push

因为你在第一次推送时使用了 -u origin master (或 main),Git 已经记住了你的默认远程仓库和分支。所以现在,你只需要简单的 git push 命令就足够了。

总结:日常更新三步曲

在你熟悉之后,日常的更新流程就是这三个命令的循环:

  1. git add .
  2. git commit -m "你的更新说明"
  3. git push

现在就去修改一下你的项目文件,然后用这三步操作来同步到 GitHub 上试试看吧!

---------------------------------------------------更新 如何提交大型文件-----------------------------------------------

直接用 git 上传大文件(比如数据集、视频、编译好的程序、设计稿等)是不可行的,而且也是一种不推荐的做法。

为什么不能直接上传大文件?

  1. GitHub 的限制

    • 当你尝试上传单个大于 50MB 的文件时,Git 会给你一个警告。
    • 当你尝试上传单个大于 100MB 的文件时,GitHub 会直接拒绝你的推送。
  2. Git 的设计原理:Git 是为管理源代码(文本文件)而设计的。它会将每次提交的文件的完整副本都存储在本地的 .git 目录中,如果直接提交大文件,会导致你的本地仓库和历史记录急剧膨胀,克隆和拉取操作会变得异常缓慢。

正确的解决方案:Git LFS (Large File Storage)

为了解决这个问题,GitHub 官方推出了一个名为 Git LFS (Large File Storage) 的工具。

它的工作原理很简单:

  • 你告诉 Git LFS 需要追踪哪些大文件(或哪类文件)。
  • 当你提交时,Git LFS 不会将大文件本身存入 Git 历史记录,而是存入一个很小的“指针”文件(里面包含了文件的下载地址等信息)。
  • 这个真正的大文件,则被上传到一个专门的、类似网盘的服务器上。
  • 这样,你的 Git 仓库本身保持小巧和快速,而大文件也得到了版本管理。

如何在 Ubuntu 20.04 WSL 中使用 Git LFS?

对于你的新项目,或者还没有尝试推送失败的项目,请按以下步骤操作:

第 1 步:安装 Git LFS

在你的 WSL 终端中,只需要一条命令即可安装。

sudo apt-get install git-lfs
第 2 步:在你的 Git 仓库中启用 LFS
  1. 进入你的项目目录

    cd ~/my-project # 替换成你的项目路径
    
  2. 运行 LFS 安装命令:

    这个命令会初始化 LFS 功能,它只需要在你的电脑上为你的账户运行一次即可,以后所有仓库都能用了。

    git lfs install
    

    它会在你的 Git 配置中添加一些设置,让 Git 知道如何使用 LFS。

第 3 步:指定需要追踪的大文件类型

现在,你需要告诉 LFS,哪些文件应该由它来管理。

  • 追踪特定类型(推荐):比如,你想让 LFS 管理所有的 .zip 压缩包。 
    git lfs track "*.zip"
    git lfs track "*.psd"
    
  • 追踪某个特定的大文件: Bash
    git lfs track "data/my_large_dataset.csv"
    

重点: 运行这个命令后,你会发现项目里多了一个名为 .gitattributes 的文件,或者这个文件被修改了。这个文件非常重要,它记录了你的 LFS 追踪规则,你必须像对待其他代码文件一样,把它添加到 Git 并提交。

第 4 步:正常提交和推送

在你设置好 LFS 追踪后,后续的上传流程和你之前学到的完全一样

  1. 添加文件(包括 .gitattributes!)

    # 确保 .gitattributes 文件被添加
    git add .gitattributes# 添加你的大文件和其他所有文件
    git add .
    
  2. 提交

    git commit -m "Add large files via LFS"
    
  3. 推送

    git push
    

此时,当你 push 的时候,你会看到终端输出中会显示 LFS 正在上传大文件,类似这样:

Uploading LFS objects: 100% (1/1), 250 MB / 250 MB, 25 MB/s, done.

这就表示大文件已经通过 LFS 成功上传了!任何克隆你这个仓库的人,只要他也安装了 Git LFS,就能自动下载这些大文件。

总结

处理大文件的核心思路是:在添加和提交它们之前,先用 Git LFS 进行标记

  1. 安装:sudo apt-get install git-lfs
  2. 初始化:git lfs install
  3. 标记文件:git lfs track "*.dat"
  4. 正常操作:git add . -> git commit -> git push

这样就能优雅地管理你的大文件,同时保持 Git 仓库的健康。

------------------------更新  深度学习项目常用gitignore模版--------------------------------

什么是 .gitignore 文件?

.gitignore 是一个纯文本文件,你可以在里面列出不希望 Git 跟踪(也就是不希望被 git addgit commit)的文件或文件夹的规则。你可以把它理解成一个“忽略清单”。

当你在项目中放置了这个文件后,Git 在执行 git add . 等命令时,会自动跳过清单上列出的所有文件和目录。

如何为你的深度学习项目创建和配置 .gitignore

第 1 步:在项目根目录创建 .gitignore 文件

确保你在 WSL 终端中位于你的项目根目录 (~/my-project),然后执行以下命令创建一个空文件:

touch .gitignore

注意:这个文件名前面有一个点 .,在 Linux 系统中表示它是一个隐藏文件。

第 2 步:编辑 .gitignore 文件,添加忽略规则

你可以使用任何文本编辑器来编辑这个文件。在 WSL 终端里,一个简单的编辑器是 nano

nano .gitignore

打开后,你就可以输入忽略规则了。对于你的需求(忽略数据集和权重文件),你可以添加以下内容:

# 字节码和缓存文件
__pycache__/
*.pyc
*.pyo
*.pyd# 虚拟环境文件夹 (非常重要!)
venv/
env/
.venv/
.env/# IDE 和编辑器配置文件
.vscode/
.idea/
*.swp
*.swo# 操作系统生成的文件
.DS_Store
Thumbs.db# 日志文件和文件夹
logs/
*.log# 数据集
data/
datasets/
*.zip
*.tar.gz# 模型权重和输出
checkpoints/
models/
weights/
runs/
output/
*.pth
*.pt
*.h5
*.hdf5
*.onnx
*.pb
*.weights

规则解释:

  • data/:忽略名为 data 的整个文件夹。后面的 / 很重要,它表示这是一个文件夹。
  • *.pth:忽略所有以 .pth 结尾的文件。* 是通配符,可以匹配任意字符串。
  • 。。。。。。。。

编辑完成后,在 nano 编辑器中按 Ctrl + X,然后按 Y 保存,最后按 Enter 确认文件名并退出。

第 3 步:提交 .gitignore 文件本身

这个“忽略清单”.gitignore 文件本身是你项目配置的一部分,所以它需要被提交到你的 GitHub 仓库中,这样其他协作者或者你在另一台电脑上克隆项目时,也能应用相同的忽略规则。

# 1. 将 .gitignore 文件添加到暂存区
git add .gitignore# 2. 现在当你添加其他所有文件时,被忽略的文件就不会被加进来了
git add .# 3. 提交你的更改,提交信息可以说明你添加了忽略文件
git commit -m "Add .gitignore to exclude datasets and weights"# 4. 推送到GitHub
git push

 重要:如果文件已经被提交过怎么办?

.gitignore 只能忽略那些还未被 Git 跟踪的文件。如果你不小心已经把某个数据集或权重文件 commit 过了,你需要先将它从 Git 的跟踪列表中“移除”,然后再提交这个移除的操作。

  1. 从 Git 跟踪中移除文件/文件夹(但保留在本地)

    使用 git rm --cached 命令。--cached 参数非常重要,它表示只从 Git 的索引中删除,但保留你本地磁盘上的实际文件。

    • 移除整个文件夹(例如 data/): Bash
      git rm -r --cached data/
      
    • 移除单个文件(例如 model.pth): Bash
      git rm --cached model.pth
      
  2. 提交这个“移除”操作

    现在,将你的 .gitignore 文件和这个“移除”操作一起提交。

    git add .gitignore
    git commit -m "Stop tracking dataset and add .gitignore"
    git push
    

这样,之前误传的大文件就会在 GitHub 的后续版本中被移除了(但它可能依然存在于历史记录中,对于私有项目通常没关系)。

http://www.xdnf.cn/news/921889.html

相关文章:

  • python版若依框架开发:后端开发规范
  • 快捷键的记录
  • UOS无法安装deb软件包
  • [论文阅读] 人工智能 | 搜索增强LLMs的用户偏好与性能分析
  • AcWing--数据结构1
  • stm32—ADC和DAC
  • 《JavaAI:稳定、高效、跨平台的AI编程工具优势解析》
  • Linux下的fuser用法简析
  • 文件(保存)通讯录
  • 长跑赛接力赛模式
  • C++ -- 多态
  • 《高等数学》(同济大学·第7版)第二章第五节“函数微分“
  • SpringBoot+Mysql校园跑腿服务平台系统源码
  • Doris 与 Elasticsearch:谁更适合你的数据分析需求?
  • 游戏常用运行库合集 | GRLPackage 游戏运行库!
  • LILIKOI FBG腹腔镜抓握力传感器的技术解析与应用前景
  • 调试器基本原理
  • LeetCode 08.06 面试题 汉诺塔 (Java)
  • HttpURLConnection实现
  • 智能手表供应链与采购清单(Aurora Watch S1)
  • 从零开始开发纯血鸿蒙应用之网络检测
  • 如何在c/c++中定义和使用宏
  • C++ 中的编译期计算(Compile-Time Computation)
  • 安达发|装饰材料行业APS生产排程软件:破解生产困局,智造升级新引擎
  • MySql数据库入门到精通——关系数据库标准语言SQL
  • 论文阅读:Matting by Generation
  • 【HarmonyOS 5】拍摄美化开发实践介绍以及详细案例
  • sql中group by使用场景
  • Spring Cloud Hystrix熔断机制:构建高可用微服务的利器
  • 【HarmonyOS 5】运动健康开发实践介绍以及详细案例