• Linux学习系列(二十):在Linux系统中使用Git上传代码到GitHub仓库


    引言

    在工作中用git命令提交代码办公是非常常用的,所以掌握git的基本原理以及使用方法是非常的重要的,接下来本文章将简单介绍git的原理以及git的基本使用方法,以便能够更好的上手使用。


    一、Git的基本原理

    git:一种管理文件的工具,是C/S模式的,一般都是在终端,往Github上提交。
    Github:相当于是一个Git的服务平台,我们可以使用其提供的服务。这里面的文件是按仓库来划分的,可以认为一个仓库就是一个文件夹。
    使用基本流程:一般提交代码就是先从工作区通过git命令提交到暂存区,然后再提交到本地仓库中,最后没问题了上传到远程仓库中。刚开始可以通过pull拉取远程仓库到本地,在本地仓库中有多个提交版本和对应的日志,可以通过日志ID来回退版本。
    在这里插入图片描述


    二、如何在Linux中连接Github代码仓库

    1.安装git

    • 可以通过git version命令来判断是否安装了git
      在这里插入图片描述

    • 如果没有安装可以使用sudo apt install git命令来安装

    2.设置用户名和邮箱

    注意:第一次使用需要,以后就不需要了,把邮箱和姓名替换成自己的就行了,实际用处就是在提交代码时能够知道是谁提交的,让别人能够找到你。
    git config --global user.email "YourEmail"
    git config --global user.name "YourName"
    在这里插入图片描述

    3.创建Github本地仓库

    1. 登录GitHub账号,点击头像

    在这里插入图片描述

    1. 点击Your repositories

    在这里插入图片描述

    1. 点击New

    在这里插入图片描述

    1. 起一个仓库名字,README文件可选可不选,最后创建即可

    在这里插入图片描述

    4. 通过ssh密钥连接GitHub仓库

    原因:仓库可以公开看,但不能每个人都能上传代码到仓库中,并且git需要知道提交的远程仓库是哪一个,这个就需要ssh密钥来搞定了。

    1. 输入命令ssh-keygen -t rsa -C "YourEmail"生成ssh密钥文件,然后其余按回车就行了,不用输入。
      在这里插入图片描述
    2. 使用命令cat ~/.ssh/id_rsa.pub,查看自己的ssh key
      在这里插入图片描述
    3. 将其全部复制,在GitHub中按照如下操作,随便起个名字,然后将刚才复制的密钥粘贴到对应的地方,即可。
      在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    1. 最后在终端中输入ssh -T git@github.com,出现如下即连接成功
      在这里插入图片描述

    三、Git的基本使用

    1.创建本地仓库

    一般是创建一个文件夹,然后进去,输入命令git init将当前文件夹变为可以通过git管理的仓库,这个文件夹里面的区域就是我们的工作区.git里面存的是日志之类的东西。
    在这里插入图片描述

    2.拉取远程仓库代码

    一般都是先从远程仓库中把代码拉取到工作区,然后我们在本地对其进行修改,然后通过git命令上传到远程仓库中。

    1. 这里我先在GitHub中写了一了C++程序用来模拟真实的情况,在GitHub上是可以直接上传文件、修改文件的,如下步骤:
      在这里插入图片描述
      最后把改写的一写就行了,最后提交。在这里插入图片描述
    2. 创建了一个C++文件用来模拟真实情况
      在这里插入图片描述
    3. 通过命令git clone ssh地址就可以把远程仓库中的代码拉取到工作区当中在这里插入图片描述
      在这里插入图片描述

    3.修改远程仓库的代码

    1. 可以直接在本地把该文件中的代码修改
      在这里插入图片描述

    2. git add filename将文件暂存到缓存区

    3. git commit -m "注释"将暂存区的文件提交到本地仓库
      在这里插入图片描述
      可以用命令git status查看暂存区的情况在这里插入图片描述
      可以用命令:
      git log查看提交的版本记录
      git reflog查看操作日志
      在这里插入图片描述在这里插入图片描述

    4.使用命令git push 将本地仓库的文件上传到远程仓库中在这里插入图片描述在这里插入图片描述
    一般要是上传同一个文件会冲突的,有些文件git不知道怎么修改和合并,所以下一个人拉取文件时一般要修改文件一下,但只要文件名不一样就行了提交的时候。在这里插入图片描述

    4.向远程仓库提交代码

    这个跟上一个修改其实是一样的,熟悉一下命令:
    git add filename:存入暂存区
    git commit -m "注释":提交到本地仓库
    git push / git push origin 分支名:push到远程仓库(因为测试只有一个分支,所以git push就够了)
    在这里插入图片描述在这里插入图片描述


    四、Git常用命令

    git init//使该目录变成git管理的仓库
        
    git add filename//添加文件到暂存区
    git commit -m "注释"//将暂存区的文件提交到本地仓库中
        
    git status//查看仓库状态
    git log//查看提交的版本记录
    git reflog//查看对仓库的操作日志
        
    git diff [HEAD/HEAD^^... /  版本号]//查看当前工作区的代码与最后一次版本(或者前几个版本)的比较,仅git diff默认为最后一次提交的版本
    git checkout filename//把当前版本库中最新的代码覆盖当前的,放弃对工作区代码的修改,可以回退版本再覆盖
    git reset --hard HEAD^//回退版本,多个^代表回退几个版本   
    git reset --hard 版本号//这里也可以是版本号,用git log/reflog可以查看
    git reset HEAD filename//从暂存区撤销
    git rm filename 后git commit -m //先删除再把当前版本提交,就从版本库中删了,相当于提交了一份没有该文件的版本
    
    git branch//查看分支
    git branch 分支名//创建分支
    git checkout 分支名//切换分支
    git checkout -b 分支名//创建并切换到该分支
    git branch -d 分支名//删除分支,不能删除当前所处分支,切换到其它分支再删除
    git merge 分支名//合并某个分支到当前分支,合并时可能产生冲突,需要解决冲突,自己vim改代码就行了
    git stash//保护现场,当前工作区有代码修改了,是不能切换到其他分支,可以先保存现场,再切换
    git stash list//列出所有保存的现场信息 
    
    ssh-keygen -t rsa -C "su@126.com"//生成通信密钥,生成的公钥在/home/stu/.ssh/下
        
    //测试与github或者gitee(码云)有没有连通:
    ssh -T git@github.com//测试github 的命令
    ssh -T git@gitee.com//测试gitee 也就是码云的命令 
        
    git clone 项目地址//克隆项目
    //首先得把自己的仓库有东西,然后再拉取服务器最新的更新到本地,不然会提交失败
    git pull origin 分支名//拉取远程服务器上的分支更新到本地,分支名不写默认master
    git push -u origin 分支名//提交分支到远程仓库,并跟踪分支
    git push origin 分支名//提交分支到远程仓库,如果改同一个文件,提交后,然后git不知道用哪个,都用,还是都不用,还是分别用哪个,所以提交到仓库中,别人看的时候,需要解决冲突,自己改代码
    
    
    ssh -T git@github.com  //可以查看有没有联通
        
    //然后就git clone 自己GitHub上的SSH,然后就正常输命令了
    //git pull origin master
    //git add filename
    //git status     git log      git reflog
    //git commit -m ""
    //git push origin master
    
    • 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
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
  • 相关阅读:
    【短文】Linux怎么删除全部带有指定关键字的进程
    信钰证券:大盘再度回落 缩量背后静待底部探明
    解决MySQL 8.0以上版本设置大小写不敏感的问题
    什么是跨域
    自回归(AR)模型的功率谱估计
    2022亚太数学杯数学建模竞赛C题(思路、程序......)
    GEE:关系、条件和布尔运算
    06 redis 集群搭建
    使用EventLog Analyzer进行华为syslog管理
    云计算基础技术
  • 原文地址:https://blog.csdn.net/weixin_60033897/article/details/136016074