刚实习?还不知道git怎么使用?看完这篇文章,教你掌握git常用命令及场景

大家好!!!相信正在看这篇文章的你应该也正在烦恼如何使用git吧,从我今年7月份开始实习以来,我就已经在使用git上踩了无数的坑,如:

  • 师兄:你去把xx项目拉下来
  • 我:好......师兄怎么拉的代码没有你截图的部分
  • 师兄:你得切换分支啊...

又比如:

  • 师兄: 你推的代码怎么一堆爆红啊
  • 我:我看推不上,我就git push --force
  • 师兄: 哇靠,你冲突都没解决就强推代码了?
  • 相信各位肯定没犯过我这样离谱的错误,但是也或多或少踩过一些奇奇怪怪的坑,那么接下来我就给大家介绍一下常用的一些git命令及其使用场景

一、 基础操作

初始化仓库
  • git init

    • 场景:初始化一个新的 Git 仓库。

    • 示例:

      csharp 复制代码
      git init
    • 作用:将当前目录变成一个 Git 仓库。

克隆仓库
  • git clone [repository_url]

    • 场景:从远程仓库复制项目到本地。

    • 示例:

      bash 复制代码
      git clone https://github.com/user/repo.git
    • 作用:复制远程仓库的代码到本地,同时配置远程关联。上边的方法一般克隆的是我们的主分支(master)的代码,如果想克隆特定分支的代码可以执行以下命令

    css 复制代码
      git clone -b [branch_name] [repository_url]

二、 更新与提交

更新最新状态
  • git fetch
    • 场景:用来获取某个分支的最新代码,但执行这个命令并不会使我们的工作区代码发生改变,因为它只是去获取代码的一个最新状态

    • 作用:当我们想去查看某个分支有没有推取最新的代码,但又不想拉去他的代码时,便可以使用这个命令 git fetch origin xxx(分支名),如果有下git graph或其他git插件,就可以通过git graph直观的看的某个分支的最新提交,当然git graph一般会自动获取最新的提交,只有少数情况下没获取到。

合并分支
  • git merge [branch_name]
    • 场景:将指定分支的代码合并到当前分支。如git merge xxx(分支名)

    • 示例:

      sql 复制代码
      git merge master
    • 作用:该命令常用于将我们自己分支的代码合并到主分支,但是这个操作一般会在git集成的平台里通过手动点击执行,不需要输代码。另一个场景就是用于去将某个分支的最新代码合并到本地分支,提前去解决后面合并代码可能出现的冲突,但是这种方法会产生一个commit,在后期去观察我们的git graph时可能会让git图混乱,如:

    • 上图中的每一条线代表一个分支,每一个圆点都代表一次因merge而产生的commit,在我们后面出现问题去回查代码的提交历史的时候可能会很难受,但是这种方式的优点就是不容易出现一些提交权限方面的问题,后面会介绍另一种方式去拉取最新的代码

拉取远程最新代码
  • git pull
    • 场景:从远程仓库拉取最新的更改并合并到当前分支
    • 示例: git pull origin [branch_name]
    • 作用:相信该命令也是大家最常用的命令之一,每当我们需要拉取自己分支或别人分支的最新代码时,我们会使用该命令。而该命令其实也就是组合了git fetch 和 git merge,等于是我们在执行git pull的过程中会先去使用git fetch获取目的分支的最新代码状态,然后执行git merge将目的分支的最新代码合并到我们的本地分支。
变基操作
  • git rebase
    • 场景:将当前分支的提交"移植"到目标分支的最新提交之上,创建一个线性的提交历史。 这使得项目历史更加清晰,便于理解和维护。

    • 示例: git rebase [branch_name]

    • 作用:可能上面的方式描述的不是那么通俗易懂,打个比方,有分支master,我在master上拉了两个分支feature1feature2分别开发不同的功能,feature1有三个commit分别是a,b,c,feature2有两个commit是d,e,现在我在feature1执行git rebase feature2,那会发生什么呢,此时feature1的历史提交变为了d->e->a->b->c,为什么会这样,因为变基操作及改变基底,也就是改变我们的提交历史,原本的分支起点是从master开始,执行rebase后变为了由feature2的最新提交开始。这样做的好处就是我们的提交历史是一条直线,不会有突然插入我们分支的commit,但是也会让我们的分支历史不在单纯,因为其中的一些commit可能不是我们自己的提交,而是变基而来,要是觉得文字不够形象可以观看下图

    • 我们可以使用git pull -r让我们的拉取变为变基拉取代码

暂存代码
  • git stash
    • 场景:将当前工作目录的更改暂存起来,恢复到上次提交的状态。适用于需要切换分支处理紧急任务时。

    • 作用:该命令常用于这样的场景,当你正在分支一写需求时,领导忽然给你一个新需求,那你只好在master上新拉一个分支去做这个需求,但分支一的需求还没写完,那咋办?又不能直接提交,不提交代码又无法切换分支,面对这样的场景,那就可以拿出我们的git stash了,我们先使用git stash暂存当前工作区的代码,在切换到我们的目标分支,将那边的需求做完以后,我们又可以切回原来的feature1分支,使用git stash pop让我们上一个暂存的提交出栈到我们的工作区,又能接着开发了,完美解决

    • 当然,我们也可以用git stash list去查看当前的暂存区有哪些暂存的commit

    • 示例:

      复制代码
      git stash
提交代码
  • git commit
    • 场景:将当前暂存区的代码提交,暂存区的代码哪来的呢,当然是git add添加的嘛,当然我们也可以采用git commit -am "提交信息",将git add和commit操作合并

    • 作用:这个命令很简单,就不详细介绍了,主要介绍一下可能出现的问题,有时候我们的项目可能配置了eslint代码提交检查,当出现一些没来由的错误(既没提示错误信息,也没提示错误位置),但是又commit不上,咋办,临时手段就是采用下边的命令git commit -am "提交信息" --no-verify,该命令可以让我们忽视eslint的检查

    • 示例:

      sql 复制代码
      git commit -m "feat: xxx"
推送代码
  • git push
    • 场景:将本地分支的更改推送到远程仓库。适用于将本地开发的更改共享到远程仓库。

    • 作用:这个命令也不过多介绍,就如字面意思而言,将本地提交推送到远程,使其同步。这里主要在介绍下使用该命令容易出现的问题,我们有时会遇到git push无法推送的情况,大部分是因为远程分支存在多人协作的情况,导致提交不同步,此时我们可以使用git push --force强制推送

    • 示例:

      css 复制代码
      git push origin [分支名]
切换分支
  • git checkout [branch_name]
    • 场景:切换到指定的分支。适用于在不同的开发任务之间切换。
  • git switch [branch_name]
    • 场景:与上边命令相同,用于切换分支,更加语义化
删除本地分支
  • git branch -d [branch_name]
    • 场景:删除本地分支。适用于清理不再需要的分支。远程分支依旧存在
删除远程分支
  • git push origin -d [branch_name]
    • 场景::删除远程仓库的分支。适用于清理远程仓库中的不再需要的分支。需要注意一下与上方命令的区别

好,那今天的介绍就到这里了,祝大家实习工作顺利,文章反响可以的话我会继续更新~

相关推荐
YoungHong19922 小时前
Git Bisect 使用指南:高效定位引入 Bug 的提交
git·bug
极小狐5 小时前
极狐GitLab 的压缩和合并是什么?
运维·git·ssh·gitlab·github
它说我会飞耶12 小时前
git 命令集
git
极小狐12 小时前
极狐GitLab 合并请求依赖如何解决?
运维·git·ssh·gitlab·github
ikkkkkkkl16 小时前
Git基本操作
git
互联网搬砖老肖17 小时前
git 的基本使用
大数据·git·elasticsearch
程序猿chen19 小时前
量子跃迁:Vue组件安全工程的基因重组与生态免疫(完全体终局篇)
前端·vue.js·git·安全·面试·前端框架·跳槽
SunTecTec20 小时前
Idea 配置 Git
git
chxii21 小时前
2.4.5goweb项目上传到csdn的git仓库
git
清风徐来QCQ21 小时前
git和github的使用指南
git·github