刚实习?还不知道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]
    • 场景::删除远程仓库的分支。适用于清理远程仓库中的不再需要的分支。需要注意一下与上方命令的区别

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

相关推荐
图书馆钉子户2 小时前
git 常用功能
git
普世的微光3 小时前
ue----git局域网内部署裸仓库,别的机器进行访问
windows·git
图书馆钉子户4 小时前
怎么合并主从分支,要注意什么
git
LIU_Skill5 小时前
Git版本控制系统---本地操作(万字详解!)
git
qq_2187533110 小时前
常用Git命令
java·git
4277240021 小时前
IDEA使用git不提示账号密码登录,而是输入token问题解决
java·git·intellij-idea
利刃大大1 天前
【Git】五、多人协作
git
逸Y 仙X1 天前
Git常见命令--助力开发
java·大数据·git·java-ee·github·idea
wgslucky2 天前
pipeline 使用git parameter插件实现动态选择分支构造
git