git的安装以及基本命令使用、远程仓库的操作、vscode连接远程仓库进行项目的上传、gitee的使用

git

git版本控制,管理

git的安装:

  • sudo apt install git

  • git version------>查看git的版本号

文件的四种状态

  • **Untracked:(工作区)**未跟踪,此文件在文件夹中,但并没有加入到git库中,不参与版本的控制,通过git add .---->Staged

  • unmodify :文件已经入库,未修改,此版本快照内容与文件夹完全一致,这种类型的文件有两种去处:

    • 如果被修改,变为Modified

    • 如果使用git rm移出版本库---->Untraced文件

  • **Modified:**文件已经修改,仅仅是修改

    • 通过git add .----->暂存Staged状态(暂存区)

    • git checkout 则丢弃修改过的---->unmodify

      • 这个git checkout即从库文件中取出文件,覆盖当前修改
  • **Staged:**暂存状态

    • 执行git commit则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件状态为Unmodify状态。执行git reset HEAD filename取消暂存,文件状态Modified

git的基本命令

初始化仓库

注意事项

第一次使用git命令提交代码之前,需要先设置用户名及邮箱,之后就不需要了

bash 复制代码
//设置用户名的邮箱
git config --global user.email "邮箱"
//设置用户的名字
git config --global user.name "cjj"

查看仓库状态

bash 复制代码
git status
//位于分支 master

提交版本到仓库

bash 复制代码
git commit -m "create man.c"

查看提交的历史记录

bash 复制代码
git log

查看对仓库的操作日志

  • 查看本地分支、HEAD引用的移动历史

  • 简单来说,他记录本地的仓库"去过哪里、改过哪个分支指针"

  • 常用于找回误删提交、误reset、误rebase之后的代码

bash 复制代码
git reflog

比较版本差异

使用git diff HEAD 比较当前内容与最后一次提交的版本的差异,如下在main.c中添加了一行内容,显示

添加的一行前面有'+'号标识。如果内容相同则该命令不显示输出结果。HEAD也可以省略默认就是与最近

一次比较。

bash 复制代码
git diff HEAD

git checkout

  • 切换分支/提交

    • 切换到某个分支

      bash 复制代码
      git checkout main
      //现在更推荐  
      git switch main
    • 新建并切换分支

      bash 复制代码
      /*
      git branch feature/login  //创建新分支
      git checkout feature/login //切换分支
      */
      git checkout -b feature/login
      //等价
      git switch -c feature/login
      //switch--->切换分支
      //c---->create(创建新分支)
    • 切换到某个提交

      bash 复制代码
      git checkout <commit-hash>
      //<commit-hash>-->提交ID
      //就是每次 git commit之后生成的一串编号
      git log --oneline
    • 进入detached HEAD ,你不在任何分支上 ,只是临时查看某个历史版本

      • 正常情况下是

      • HEAD -> 分支名 ->提交

      • detached HEAD---->脱离了分支,直接指向某个提交

        • HEAD -> 提交>
      • 如果想基于这个提交继续开发,应该新建分支

        bash 复制代码
        git switch -c recover-branch
      • 一步到位

      bash 复制代码
      //从提交B开始,创建一个新分支fix-from-old-version,并立刻切换到这个新分支
      git switch -c fix-from-old-version B
  • 恢复文件

    • 恢复到某个文件上次提交的状态

      bash 复制代码
      git checkout -- app.js
      //现代推荐
      git restore app.js
    • 某个提交恢复指定文件

      md-end-block 复制代码
      <span style="background-color:#f8f8f8"><span style="color:#000000">git</span> <span style="color:#000000">checkout</span> <span style="color:#981a1a"><</span><span style="color:#000000">commit</span><span style="color:#981a1a">-</span><span style="color:#000000">hash</span><span style="color:#981a1a">></span> <span style="color:#981a1a">--</span><span style="color:#000000">app</span>.<span style="color:#000000">js</span></span>
总结:
  • checkout---->全能

  • 现代Git更推荐

    • switch---->管分支

    • restore---->管文件

暂存区撤销

bash 复制代码
git reset HEAD main.c

//推荐写法
git restore --staged main.c

回退版本

  • git reset --hard HEAD^

  • 当前分支退回上一个commit ,并且丢掉工作区、暂存区的修改

bash 复制代码
git status
git relog
git reset --hard HEAD^
  • git reset ---->移动当前分支的位置

  • --hard --------->非常彻底地重置

    • 当前分支的指向

    • 暂存区

    • 工作区文件

git rm filename

  • 删除一个文件(工作区),此时提交到暂存区(存的是删除记录),需要commit后才在版本库中删除

bash 复制代码
//仓库的状态
git status
git rm main.c
git status
/*changes to be committed:
    delete:mian.c
*/
  • 结果:

    • 工作区:main.c被删除

    • 暂存区:记录main.c要被删除

    • 下一次commit删除main.c

      bash 复制代码
      git commit -m "delete main.c"

git分支操作命令

git branch

  • 查看分支

git branch 分支名

  • 创建分支

git checkout 分支名

  • 切换分支

  • git switch 分支名

git checkout -b 分支名

  • git switch -c 分支名
  • 创建并切换分支名

git branch -d 分支名

  • 删除分支

    • 不能删除当前所处分支,切换到其他分支再删除

git merge 分支名

  • 合并某个分支到当前分支

  • 合并时可能产生冲突,需要解决冲突

    • 有时需要禁止快速合并

      • 目的:保留这个分支曾经被合并过的记录
      • git merge -no-ff -m '描述' 分支名

      • no fast-forward

git log --graph

  • 图表形式显示分支

git stash

  • stash--->藏起来、暂存、储藏
  • 用来临时保存 你当前还没有提交的修改,让当前工作区变干净,方便你切分支、拉代码、修bug

bash 复制代码
git stash
git switch master
//做别的事
git switch feature/login
git stash pop
//恢复最近一次stash 并删除它

远程仓库操作

克隆项目

  • git clone 项目地址

提交分支到远程仓库

  • git push origin 分支名

提交分支到远程仓库,并跟踪分支

  • git push -u origin 分支名

拉取远程服务器上的分支更新到本地

  • git pull origin 分支名

gitee的使用

1.检查是否已经有SSH key

bash 复制代码
ls ~/.ssh
    
    
//如果看到
id_ed25519
id_ed25519.pub
//或者
id_rsa
id_rsa.pub
//说明已经有key,直接跳到第3步

2.生成SSH key

bash 复制代码
ssh-keygen -t ed25519 -C "你的邮箱"

3.复制公钥

bash 复制代码
cat ~/.ssh/id_ed25519.pub
    
//复制一整端ssh-ed25519...

4.添加Gitee

打开:

Gitee SSH Key 添加页面

操作:

点击:新增公钥粘贴内容 → 保存

5.测试SSH是否成功

bash 复制代码
ssh -T git@gitee.com

第一次会问:

Are you sure you want to continue?

输入:

yes

成功会显示:

Hi xxx! You've successfully authenticated

6.进入项目目录

7.检查当前的远程仓库

bash 复制代码
git remote -v
//如果看到   http://gitee.com/....git---------->还是HTTP

8.改为SSH(关键步骤)

  • "新项目第一次必须做的" ,只做一次

bash 复制代码
git remote set-url origin git@.自己是的仓库地址

9.操作流程

  • 第一次

bash 复制代码
git init
git add .
git commit -m "initial commit"
创建空仓库,不要勾README
git remote add origin git@仓库地址(gitee.com:用户名/仓库名.git)
git push --set-upstream origin master
//git push  //git push -u origin master
  • 之后

    md-end-block 复制代码
    git add .
    git commit -m "版本更新提示"
    git push
相关推荐
鹤落晴春1 小时前
RH124问答4:创建、查看和编辑文本文件
linux·运维
暮云星影1 小时前
全志T507sdk结构梳理及开发步骤总结
linux·arm开发
utf8mb4安全女神2 小时前
shell脚本grep指令sed指令awk指令
linux·运维·服务器
Shadow(⊙o⊙)2 小时前
信号2.0,深入信号三张表block pending handlers,core文件的使用,信号执行逻辑:CPU虚拟内存物理内存,时钟源,软中断。
linux·运维·服务器·开发语言·c++
嵌入式修炼师2 小时前
搭建linux nfs服务远程调试环境
linux
zhangrelay2 小时前
ROS2 Lyrical 入门+进阶+精通+……
linux·笔记·学习·机器人·课程设计
Shadow(⊙o⊙)2 小时前
C++进阶知识3.0
linux·服务器·开发语言·c++
黑白园2 小时前
【环境搭建】虚拟机及Ubuntu安装所需的电脑硬件资源
linux·ubuntu
阿文的代码库2 小时前
算法专题:独特的电子邮件地址
linux·运维·算法