git 常用命令大全

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、git是什么?
  • 二、工作中常用git命令集合
  • 三、部分git命令注意事项
  • 四、git reset 的五种模式
  • 五、总结


前言

git命令

其实不管是服务端还是前端,几乎都离不开git,当然也有部分人使用的是svn,或者使用图形化的git工具,例如:Git GUI SourceTree GitKraken 等等,或者借用vscode/webstorm等开发工具里面自带的图形界面来图形化界面的形式实现git功能。

我个人还是喜欢使用最基础的命令操作哈,有人感觉装逼,有人感觉命令更加方便,我单纯比较懒,一直用命令,用习惯了,以下仅仅是个人常用的命令总和,担心那天忘了,自己看看,哈哈


一、git是什么?

定义:分布式版本控制系统

‌Git是一种分布式版本控制系统,允许用户对代码进行本地克隆,形成一个完整的版本控制存储库,从而无论在线还是离线都能轻松工作‌。

与其他版本控制系统不同,Git通过记录快照而非差异比较来存储数据,这使得它在处理大型项目时具有显著的优势。‌

Git的优点包括速度快,这对于像Linux内核这样的大型项目来说非常重要,因为它能够高效地处理大量的代码变更。此外,Git的分布式特性使得源代码的发布和交流极其方便,用户可以在本地进行版本控制操作,然后在需要时与远程服务器同步。

二、工作中常用git命令集合

git init // 在当前目录初始化git仓库
git clone [url] // 克隆远程仓库到当前目录 url远程仓库地址git config --global user.name "[name]" // 设置用户名 一般配置一次就好了
git config --global user.email "[email address]" // 设置用户邮箱 一般配置一次就好了git add . // 添加所有文件 .代表所有暂存区的文件
git add [file-name] // 添加指定文件 file 文件名git commit -m "[commit message]" // 提交更改 -m 后面根提交信息git log // 查看提交历史git remote add origin [url] // 添加远程仓库git branch // 列出所有本地分支
git branch -a // 列出所有本地分支和远程分支
git branch [branch-name] // 本地创建分支
git branch --delete [branch-name] // 本地删除分支 或者 git branch -D [branch-name] 或者 git branch -d [branch-name]
git branch -m [old-branch-name] [new-branch-name] // 更改本地分支名,old-branch-name 旧名字 new-branch-name 新名字 git checkout [branch-name] // 切换到指定分支 branch-name 分支名
git checkout -b [branch-name] // 创建分支,并切换到创建好的分支上
git checkout [commit_id] [file] // 恢复文件,commit_id指commit提交记录的id,可以通过git log查询,file 就是文件名了
git checkout [commit_id] // 版本回退git pull // 将远程所有的分支更新到本地目录中,当你使用vscode的时候查询远程分支,会发现有些没有,那么执行这个命令就好了
git pull origin [branch-name] // 以将远程仓库的最新代码拉取到本地仓库,以使你的本地仓库与远程仓库同步,这个命令其实有两重意思,后面会细讲git merge [branch-name] // 合并指定分支到当前分支, 它将两个分支的历史记录合并在一起,创建一个新的合并提交(merge commit)git push origin [branch-name] // 将本地代码推送到‌远程仓库,确保本地分支与远程分支的代码一致,使得项目的所有开发者能够共享最新的代码。
git push origin --delete [branch-name] // 删除远程仓库分支git stash // 暂存工作区修改的内容,可以stash多次,从最近一次的commit读取相关内容。
git stash pop // 恢复暂存的工作区内容,值得注意的是, git stash pop 获取到的是最近一次stash进去的内容,也就是说如果stash两次或者多次,那么恢复的是最新一次stash进去的内容。
git stash list // 查询工作区所有stash的列表
git stash apply stash@{1} // 吐出来指定暂存内容,stash@{1}就是暂存的序号,不指定就是默认最新的一次。
git stash clear // 清空stashgit reset *** // 这个命令下面会详细讲解,它有三种模式git cherry-pick [commit_id] // 合并某分支的某一次提交记录,到本分支上,这里commit_id是commit提交生成的id
git cherry-pick [commit1] [commit2] ... // 合并分支的某几次提交记录
git cherry-pick [commit1]..[commit2] // 合并提交记录commit1到commit2之间的所有的提交记录,但不包含commit1的这次提交记录
git cherry-pick [commit1]^..[commit2] // 合并提交记录commit1到commit2之间的所有的提交记录,包含commit1的这次提交记录
git cherry-pick [branch_name] // 合并该分支上最新的一次提交记录

三、部分git命令注意事项

  • git pull origin [branch-name]
    这个其实是一个组合命令,它首先执行 git fetch,然后执行 git merge,所以其实给人会有两种现象
    一种是当你本地分支和远程分支名相同时,就是本地同步远程的最新代码了,看起来是更新操作,实际也有合并的成分,但都是同分支操作的,个人感觉更新的成分大与合并。
    另一种是当你分支和远程分支名不相同时,这里就要注意了,合并的成分大于更新了,这个时候更像是执行git merge [branch-name]命令,很容易会有文件冲突了。
    当然git pull 和 git merge是有区别的
    git pull 是一个快捷方式: 执行 fetch 和 merge 的组合操作,用于将远程仓库的更改同步到本地。
    git merge 是一个单独的合并操作: 用于将一个分支的更改合并到另一个分支中,通常是在本地操作不同的分支之间使用。
    实际开发中,git pull 更适合用于保持本地分支与远程分支同步,而 git merge 则更适合用于在本地将多个分支的工作成果合并在一起。
  • git branch [branch-name] 和 git checkout -b [branch-name]
    这里需要注意哈,当你创建新分支时,都是以你当前这个分支为根本,创建一个新的出来,这就导致当我们实际开发新的功能时,注意要从master或者main分支去创建,避免业务逻辑代码重合而拆分不出来了。
  • git stash 和 git stash pop
    这两个命令一般都是相互配合出来的啊,类似于焦不离孟孟不离焦的情况,上文中也提到,git stash pop会吐出最新的一次暂存,那么如果git stash多次,其实git stash pop也可以吐出来多次。
    比如git stash 两次后,git stash pop也可以执行两次,把内容都吐出来,但是这里要注意点当两次吐出来的文件有一个重复的那么第二次是吐不出来的,它会提示你有冲突,需要暂存起来,(也就是git add . git commit -m '')后才能继续吐出来。所以在某种情况多次执行git stash pop是可以的,同理如果执行git stash pop有冲突或者失败了,那其实这个暂存还是在git stash list中能够看到的,这是git的一种保护机制,不要担心失败冲突了,就没了哈。

四、git reset 的五种模式

  • git reset --soft [版本号]
$ git reset --soft master^^ 
$ git reset --soft master~2
$ git reset --soft head^^
$ git reset --soft head~2
$ git reset --soft edition3^^ #这里用edition3代替git log中的唯一字符串
$ git reset --soft edition3~2
# 以上都是等价命令,使用其中一个,回退到edition版本3的前两个版本,也就是回到edition1,文件只有1.p的时候
  • git reset --mixed [版本号]
git reset --mixed master^^ #用mixed回退到edition1的状态
  • git reset --hard [版本号]
git reset --hard master^^ #用hard回退到edition1的状态
  • git reset --merge [版本号] 和 git reset --keep [版本号]
    这两种几乎不会用到,很不常用,下面我会贴,几个大声的博客链接,可以了解下。

--soft、--mixed和--hard三这的区别在于,soft 只改变本地库head的指向,mixed 改变本地库head的指向,也把暂存还原成本地库所指向的版本, hard 改变本地库head的指向,也把暂存还原成本地库所指向的版本,还把工作目录还原成本地库的版本
以下是比较详细的讲解,推荐下,我就懒的再加上个人的理解去诉说了。
git reset 三者区别详细解释一
git reset 三者区别详细解释二
git reset 三者区别详细解释三

五、总结

以上就是本人对git的一些命令总结,当然还有很多很多,这里只是列举一些常用的,同时述一些注意事项,其实我们使用相关的图形界面操作,最后也是会生成具体的git命令的,就拿Vscode里的操作工具提交代码或者更新远程仓库等等,其实是能看到具体的git命令,如下图
在这里插入图片描述
最后希望以上一些命令对初学者有点点帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/15294.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【JAVA毕业设计】基于Vue和SpringBoot的校园资料分享平台

博主说明:本文项目编号 T 059 ,文末自助获取源码 \color{red}{T059,文末自助获取源码} T059,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…

typedef 与 extern 的结合:一场误解的澄清

typedef 与 extern 的结合:一场误解的澄清 一、typedef 的基本用法二、extern 的基本用法三、typedef 与 extern 的结合:一场误解的澄清示例二:使用 extern 声明外部变量示例三:错误的用法:尝试在 typedef 中使用 extern四、总结在C语言编程的世界里,typedef和extern是两…

腾讯的AI困局

科技新知 原创作者丨林书 编辑丨蕨影 2024年已经逐渐步入了尾声,但国产大模型的内卷之战却还在继续着…… 最近,腾讯终于有了新动作,在开源模型上卯足了劲。11 月 5 日,腾讯宣布开源 MoE 大语言模型混元 Large,腾讯称…

想部署一个自己的抖音,但是不会写代码怎么办? 部署一个自己的抖音系统

想部署一个自己的抖音,但是不会写代码怎么办? 看完这篇文章,你也快速拥有自己的抖音 上效果 安装教程 docker pull ghcr.io/zyronon/douyin-vue:latest docker run -d -p 10002:80 ghcr.io/zyronon/douyin-vue:latest 使用 浏览器打开ip:10002 然后就可以使用你自己的抖音…

QT之QString常用函数

1、构造函数 char类型可以直接通过构造函数构造QString,std::string不能直接作为参数构造QString对象,可以使用QString中的静态函数转换为QString: std::string stdstr"world"; QString str4QString::fromStdString(stdstr); 2、格式化构造(…

Dubbo源码解析(三)

一、Dubbo整合Spring启动流程 Dubbo的使用可以不依赖Spring,但是生产环境中Dubbo都是整合到Spring中一起使用,所以本章就解析Dubbo整合Spring的启动流程 一、传统的xml解析方式 一、Dubbo配置解析流程 在Java 中,一切皆对象。在JDK 中使用…

用两行命令快速搭建深度学习环境(Docker/torch2.5.1+cu118/命令行美化+插件),包含完整的 Docker 安装步骤

深度学习环境的配置过于繁琐,所以我制作了两个基础的镜像,希望可以帮助大家节省时间,你可以选择其中一种进行安装,版本说明: base 版本基于 pytorch/pytorch:2.5.1-cuda11.8-cudnn9-devel,默认 python 版本…

怎么在MindMaster里插入剪贴画?

使用MindMaster绘制思维导图时,可以通过插入剪贴画的方式,让整个思维导图更具表现力。思维导图软件提供大量极具设计感的剪贴画,涉及商业活动、学习教育、社会生活等各个方面。本文中将详细为你解说怎样在MindMaster里插入剪贴画。 打开Mind…

shell脚本(1)脚本创建执行与变量使用

声明!!! 学习视频来自B站UP主泷羽sec,如涉及侵权马上删除文章 视频链接:泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 执行文件方法 首先…

智能体创新大赛|全球规模最大智能体赛事,超3成获奖者已使用智能体赚钱

11 月 12 日,百度搜索联合技术合作伙伴NVIDIA举办的「2024百度搜索文心智能体创新大赛」决赛颁奖典礼在百度世界2024「文心智能体,新智生产力」分论坛举行。 据了解,这是全球规模最大的智能体大赛,共吸引近万名参与者提交近 4000…

PVE纵览-Proxmox VE SDN入门指南:构建灵活的虚拟网络

PVE纵览-Proxmox VE SDN入门指南:构建灵活的虚拟网络 文章目录 PVE纵览-Proxmox VE SDN入门指南:构建灵活的虚拟网络摘要SDN 在 PVE 中的作用SDN 在 PVE 中的作用区域和 VNetsIPAM(IP Address Management) 关键字: PV…

【含文档】基于ssm+jsp的高校财务处理系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: apache tomcat 主要技术: Java,Spring,SpringMvc,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定义了两个…

安全见闻2

声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&#…

PVE纵览-Proxmox VE中的权限架构:角色、组与用户的关系

PVE纵览-Proxmox VE中的权限架构:角色、组与用户的关系 文章目录 PVE纵览-Proxmox VE中的权限架构:角色、组与用户的关系摘要权限1. 用户(Users)2. API 令牌(API Tokens)3. 二次验证(Two-Factor…

统计从输入的两个整数a和b所确定的范围内(0 ~ 9)出现的次数(c基础)

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h>//统计从输入的两个整数a和b所确定的范围内(0 ~ 9)出现的次数 int main() {//创建两个变量输入范围int a 0;int b 0;printf("请输入两个整数:>");scanf("%d %d", &a, &b);//保证 a &…

ssm103宠物领养系统+vue(论文+源码)_kaic

毕业设计&#xff08;论文&#xff09; 宠物领养系统的设计与实现 学生姓名&#xff1a; 二级学院&#xff1a; 班级名称&#xff1a; 指导教师&#xff1a; 年 月 日 录 摘 …

expo5.2运行web报错Cannot find module ‘react‘

修改app.json中的web output 配置为 ‘single’ 可以解决 expo run web 这个错误问题 "web": {"bundler": "metro","output": "single","favicon": "./assets/images/favicon.png"},相关链接&#xff1…

边缘提取函数 [OPENCV--2]

OPENCV中最常用的边界检测是CANNY函数 下面展示它的用法 通常输入一个灰度图像&#xff08;边界一般和颜色无关&#xff09;这样也可以简化运算cv::Canny(inmat , outmat , therhold1, therhold2 ) 第一个参数是输入的灰度图像&#xff0c;第二个是输出的图像这两个参数都是引用…

【9688】基于springboot+vue的CSGO赛事管理系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取免费源码 项目描述 在世界范围内&#xff0c;CSGO赛事管理系统已经得到…