• 怎么将Linux上的文件上传到github上


    1. 先在window浏览器中创建一个存储项目的仓库

    在这里插入图片描述

    2. 复制你的ssh下的地址

    在这里插入图片描述

    一般情况下,你是肯定没有安装过公私钥的,接下来教你安装公钥

    1) 生成ssh密钥 : 在Linux虚拟机的终端中,运行以下命令生成ssh密钥

    ssh-keygen -t rsa -b 4096 -C "your-email@example.com"
    
    然后,你一直按回车就可以了
    
    • 1
    • 2
    • 3

    请确保将"your-email@example.com"替换为您在GitHub上注册的电子邮件地址。然后,按照提示完成密钥生成过程。

    2)将ssh密钥添加到github账号 : 运行以下命令来获取公钥内容:

    cat ~/.ssh/id_rsa.pub
    
    • 1

    复制输出的公钥内容。

    登录到GitHub账号,点击右上角的头像,进入"Settings"(设置)页面。
    选择"SSH and GPG keys"(SSH和GPG密钥)选项卡,点击"New SSH key"(新建SSH密钥)。
    在"Title"(标题)字段中,为密钥提供一个描述性的名称(比如 : 直接命名为你服务器的ip地址)。
    将之前复制的公钥粘贴到"Key"(密钥)字段中。
    最后,点击"Add SSH key"(添加SSH密钥)完成添加过程。

    至此,你再重新登录你的github,你会发现,没有之前的警告提示了,说明你已成功添加ssh密钥!!!

    在这里插入图片描述

    这时候,你就得到了你ssh下的仓库地址:

    git@github.com:xxx/xxxxxxx.git
    
    • 1

    3. 克隆GitHub存储库:在Linux虚拟机的终端中,导航到您想要将文件上传到的目录。然后,使用命令git clone克隆Github存储库。例如:

    git clone git@github.com:username/repository.git
    
    后面这个:git@github.com:username/repository.git
    就是你刚才,得到的你ssh下的仓库地址:
    git@github.com:xxx/xxxxxxx.git
    
    • 1
    • 2
    • 3
    • 4
    • 5

    此时,你会发现:github上的那个仓库被克隆到了你的虚拟机中

    在这里插入图片描述

    4.将文件添加到本地存储库:在虚拟机中,将要上传到GitHub的文件复制到刚刚克隆的存储库目录中。

    比如 : 我复制了一个Nginx的目录

    wxncom@wxncom-virtual-machine:~/T$ ls
    Cluster_CPP_server
    wxncom@wxncom-virtual-machine:~/T$ cd Cluster_CPP_server/
    wxncom@wxncom-virtual-machine:~/T/Cluster_CPP_server$ ls
    README.md
    wxncom@wxncom-virtual-machine:~/T/Cluster_CPP_server$ cp ../../Nginx/ ./ -r
    wxncom@wxncom-virtual-machine:~/T/Cluster_CPP_server$ ls
    Nginx  README.md
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    5.提交更改并推送到远程存储库:在终端中运行以下命令以提交更改并将其推送到远程存储库。

    总结一下:

    cd repository   # 进入克隆的存储库目录
    
    # 前几步,我们已经OK了,直接进行下面的步骤:
    
    git config --global user.email "you@example.com"
    git config --global user.name "Your Name"
    
    git add .       # 添加所有更改的文件
    git commit -m "Add files"    # 提交更改,"Add files"是提交的注释
    git push origin master    # 推送更改到远程存储库的master分支,注意,一般情况下,刚创建的分支只有main分支,所以你要写git push origin main
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    wxncom@wxncom-virtual-machine:~/T/Cluster_CPP_server$ git push origin main
    Counting objects: 588, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (573/573), done.
    Writing objects: 100% (588/588), 7.38 MiB | 773.00 KiB/s, done.
    Total 588 (delta 97), reused 0 (delta 0)
    remote: Resolving deltas: 100% (97/97), done.
    To github.com:1AoB/Cluster_CPP_server.git
       f2603b1..671b6b3  main -> main
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    呦吼 ! 至此 , 作为一个大?学生,你已掌握了一个非常重要的技能!!!

    希望未来 , 咱们能学会更多好玩的it技能!!!

    锦囊妙计:你可能用到的补充:

    1.

    wxncom@wxncom-virtual-machine:~/T/Cluster_CPP_server$ git push origin master
    error: src refspec master does not match any.
    error: failed to push some refs to 'git@github.com:1AoB/Cluster_CPP_server.git'
    wxncom@wxncom-virtual-machine:~/T/Cluster_CPP_server$ git push origin main
    To github.com:1AoB/Cluster_CPP_server.git
     ! [rejected]        main -> main (fetch first)
    error: failed to push some refs to 'git@github.com:1AoB/Cluster_CPP_server.git'
    hint: Updates were rejected because the remote contains work that you do
    hint: not have locally. This is usually caused by another repository pushing
    hint: to the same ref. You may want to first integrate the remote changes
    hint: (e.g., 'git pull ...') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.
    
    
    
    这个错误提示表明远程仓库中的分支与你本地仓库中的分支存在冲突,导致无法推送。
    
    解决这个问题的方法是先拉取远程仓库的更新,然后再将你的更改合并后再次进行推送。请按照以下步骤进行操作:
    
    1.首先,运行以下命令来拉取远程仓库的更新:
    git pull origin main
    如果你在本地使用的是 "master" 分支而不是 "main" 分支,请相应地更改命令中的分支名称。
    
    2.Git 将尝试自动合并你的更改和远程的更新。如果发生冲突,你需要手动解决冲突。Git 会在出现冲突的文件中标记冲突的部分,你需要编辑这些文件并手动解决冲突。
    # 这个时候 , 你应该进入了一个git的文本编辑器
    # 这个部分还是不是很懂,如果我的话,当时是其实上误删了一个不重要的文件,然后就产生冲突了,所以到了这一步,我也无序解决什么冲突,直接退出这个界面. 
    # <要退出这个界面,你可以按下 Ctrl + X 键,然后输入 Y(表示是)来保存更改,或者输入 N(表示否)来放弃更改并退出。>
    
    3.解决完冲突后,运行以下命令将解决后的更改提交到本地仓库:
    git add .
    git commit -m "Merge remote changes"
    
    4.最后,运行以下命令将更改推送到远程仓库:
    git push origin main
    同样,如果你使用的是 "master" 分支而不是 "main" 分支,请相应地更改命令中的分支名称。
    
    通过以上步骤,你应该能够成功将本地更改合并到远程仓库中。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    2.

    wxncom@wxncom-virtual-machine:~/T/Cluster_CPP_server$ git push origin master
    error: src refspec master does not match any.
    error: failed to push some refs to 'git@github.com:1AoB/Cluster_CPP_server.git'
    
    
    这个错误提示表明在本地仓库中没有找到名为 "master" 的分支。通常,这是由于还没有进行过任何提交导致的。
    
    请按照以下步骤检查和解决问题:
    
    1.确保已经进行了至少一次提交:
    运行以下命令来查看当前本地分支的情况:
    git branch
    如果没有任何分支被列出,或者只有默认的 "main" 分支,则说明你尚未进行过任何提交。可以通过运行以下命令来创建并切换到一个新分支(例如 "dev" 分支):
    git checkout -b dev
    然后添加、提交你的更改:
    git add .
    git commit -m "Initial commit"
    
    2.确定远程仓库的正确名称和地址:
    运行以下命令来查看远程仓库的列表:
    git remote -v
    确保远程仓库的名称为 "origin",且与你要推送的远程仓库地址匹配。
    
    3.推送到远程仓库:
    运行以下命令来将本地分支推送到远程仓库:
    git push origin <branch-name><branch-name> 替换为你想要推送的分支名称(例如 "main""dev")。
    
    如果上述步骤中的任何一项出现问题,请检查你的本地仓库状态、远程仓库设置和分支名称,并确保正确操作。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    3. 克隆仓库的某个分支

    1)方法一:

    git clone git@github.com:xxxxx/xxxxxxxxxxxxx.git
    
    • 1

    我发现安装上面的这样,只能克隆仓库的第一个分支,我就想 : 如何修改我就可以克隆任意分支了?

    在克隆 Git 仓库时,默认情况下只会克隆主分支(通常是 “master” 或 “main” 分支)。如果你想克隆其他分支,可以通过以下两种方法之一来实现:

    1. 在克隆命令中指定要克隆的分支:
    git clone -b <branch-name> git@github.com:1AoB/Cluster_CPP_server.git
    
    • 1

    替换为你想要克隆的分支名称。

    eg : 如果要克隆 “dev” 分支,可以使用以下命令:

    git clone -b dev git@github.com:1AoB/Cluster_CPP_server.git
    
    • 1
    1. 克隆完整的仓库,并在克隆后切换到特定分支:
    git clone git@github.com:1AoB/Cluster_CPP_server.git
    cd Cluster_CPP_server
    git checkout <branch-name>
    
    • 1
    • 2
    • 3

    先使用普通的 git clone 命令克隆整个仓库,然后进入克隆后的目录,使用 git checkout 命令切换到你想要的分支。

    无论你选择哪种方法,都能够让你克隆特定的分支而不仅仅是默认的主分支。

    1)方法二: (2024-03-13更新)

    直接克隆主分支,然后git checkout 分支名即可

    
    $ git clone git@github.com:xxx/xxxxxxxxxxxxxxx.git
    $ cd 文件夹                    ==============>进入存储库
    $ git checkout 分支名
    
    ok,此时你已经成功克隆改分区的代码
    
    
    题外话:假如有很多人在这个分支做开发,当你需要拉去别人在这个分支上的东西时,你需要
    (也就是说,你已经将该仓库(repository)克隆(clone)到本地。)
    $ git checkout 分支名
    $ git pull origin wxn
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 关于在某个分支上提交代码 :
      其实你不用太担心,只要git checkout 到这个分支,那么你的拉取,提交都是这个分支上的
      也就是说,你git checkout 到这个分支到这个分支之后,既可以使用git push origin 分支名,可以直接使用git push

    4.

    在git push origin master中,遇到了一个
    warning: suboptimal pack - out of memory
    
    你觉得,这个有什么影响吗?
    
    • 1
    • 2
    • 3
    • 4

    当你在 Git 中遇到 “warning: suboptimal pack - out of memory” 的警告消息时,它表示 Git 在创建或操作打包文件时遇到了内存不足的问题。这可能会影响 Git 操作的性能和效率。

    这个"内存不足" 的警告消息指的是你的虚拟机或本地系统内存不足,而不是 GitHub 上的内存问题。

    系统内存可以类比为手机的运行内存。

    这个问题是你的虚拟机不太行,需要花钱升级为系统内存更大的虚拟机.

    5. 在window也是一样的步骤,关于window上的密钥设置

    但是:

    你可能会遇到 : 
    ERROR: You're using an RSA key with SHA-1, which is no longer allowed. Please use a newer client or a different key type.
    Please see https://github.blog/2021-09-01-improving-git-protocol-security-github/ for more information.
    
    fatal: Could not read from remote repository.
    
    Please make sure you have the correct access rights
    and the repository exists.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    ssh-keygen -t ed25519 -C "邮箱"
    
    使用这种加密算法,密钥的位置为下面的:
    cat id_ed25519.pub
    
    • 1
    • 2
    • 3
    • 4

    ps:但是从window上传到GitHub上这个网速,我真的栓Q!!! 太慢了 , 还是直接上传比较好

    补充 : 团队协作开发

    通常在团队协作开发中,每个人会从主分支(通常是 master 分支)签出自己的特性分支。这样做的好处是可以保持主分支的稳定性,同时允许团队成员在自己的特性分支上独立地进行开发。
    以下是一个简单的开发流程:

    1. 从主分支签出特性分支:
      每个团队成员在开始一个新任务或修复一个 bug 时,从主分支签出一个特性分支。例如:
      git checkout -b feature_branch master
      这将在本地创建一个名为 feature_branch 的分支,并将其基于 master 分支。

    2. 在特性分支上开发:
      特性分支上进行相应的开发工作。

    3. 定期拉取最新代码:
      在开发过程中,定期使用 git pull origin master 命令拉取最新的 master 分支代码,以保持特性分支与主分支同步。

    4. 解决冲突:
      如果在拉取最新代码时发生了冲突,需要按照之前提到的方法解决冲突。

    5. 完成开发:
      当任务完成后,在特性分支上进行提交并推送。

    6. 发起合并请求:
      将特性分支推送到远程仓库后,可以发起一个合并请求(pull request)来将特性分支合并回主分支。

    7. 进行代码审查:
      团队成员可以对合并请求进行审查,提出建议或者批准合并。

    8. 合并到主分支:
      一旦合并请求通过审查,可以将特性分支合并回主分支。

    9. 删除特性分支:
      一旦特性分支被合并,可以将其删除以保持仓库的整洁。

    • 评论:
      只有两种情况下会产生冲突:
      • git pull的时候会有代码冲突,git push因为一人一支也不会有冲突;
      • git request发起合并请求,如果这个时候产生了冲突,那是领导的事了,因为是否合并的决定权在领导那里
  • 相关阅读:
    vue的一些总结
    phpstorm+phpstudy+xdebug快速搭建php调试环境
    【培训】MMEdu离线版的使用:实现石头剪刀布图像分类的生成模型
    matlab画图常用函数image、imagesc、imshow区别
    layui增删改查
    qt window下动态库两种用法
    01-01HTML
    Hive 表 DML 操作——第2关:Select 操作
    Mendeley教程(1)中如何输出中文参考文献
    C++学习第二十六天----内联函数与引用变量
  • 原文地址:https://blog.csdn.net/weixin_52668597/article/details/133580032