git是一个分布式版本控制系统,得益于高效、协作和快速的项目代码管理特性几乎每一个软件开发团队都在深度使用。本篇是对git命令的介绍,涵盖了不低于95%的日常操作命令,对你有用话可以收藏一下哦。

一、初始化相关

初始化一个仓库

git init myrepo

克隆一个仓库到本地myrepo目录

git clone git://github.com/linux/linux.git myrepo
git remote add origin git://github.com/linux/linux.git #指定(关联)远程仓库地址,适用于从本地创建的仓库

二、配置相关

查看配置信息

git config --list
git config --list --global #全局的

配置.git文件

git config -e
git config -e --global 全局的

配置全局认证信息,去除--global 为当前仓库配置

git config --global user.name "user_git"
git config --global user.email git@github.com
git config --global user.password "mypasswd"

三、常规操作相关

git中数据在工作区暂存区本地仓库远程仓库 区域流转,下面图片可以比较清晰的呈现

任何时候查看文件git文件流转当前状态

git status

添加文件到暂存区

git add <file>
git add . #添加所有文件(改动文件)

从暂存区删除文件(添加了无用文件)

git restore --staged  <file>
git reset <file> #效果一样

删除或移动、重命名文件,并自动提交到暂存区。用于处理已提交到仓库的文件

git rm|mv <file>

提交修改到本地仓库

git commit -m "change to..."
git commit -am "change to ..." #用于直接提交修改文件,无法提交新增文件

撤销某次提交(会在分支上长生一次commit记录)

git revert <commit>

查看提交记录

git log
git log --graph #图形化查看
git blame <file> #列表的方式查看指定文件修改历史

查看文件修改或区别

git diff #暂存和工作区所有差别
git diff <file> #查看指定文件
git diff HEAD -- <file> #查看工作区和版本库里面最新版本的区别

反复横跳(版本回退)

git reset <commitid> #我们使用git log查询到需要回退版本的commitid
git reset HEAD~1 #回退到上一个版本
git rest HEAD~n #回退到前n个版本

提交修改到远程仓库

git push  #提交有冲突时需要拉取远程最新版本
git push orgin master #将本地master分支提交到远程master分支
git push -u orgin master #提交并关联(适用于从本地创建的仓库)

拉取远程仓库最新版本

git pull  #拉取合并

git fetch #拉取不合并

git pull --rebase  #不会产生merge记录,保持分支干净卫生
git add <conflict-file> #添加解决的冲突的文件
git rebase --continue #解决冲突后继续rebase

四、分支管理

查看本地分支

git branch

创建分支

git branch <branchName>

删除分支

git branch -d <branchName>  #-D 强制删除

切换分支

git checkout <branchName>
git checkout -b <branchName> #创建分支并切换 git switch <branchName>
git switch -c <branchName> #创建分支并切换

拉取远程分支

git checkout -b dev(本地分支名称) origin/develop(远程分支名称) #创建并切换
git fetch origin develop(develop为远程仓库的分支名 #创建

checkout回滚到某个commit id

git checkout <commitid>  #不会影响当前的工作区或分支(只读状态),修改不被保存
git checkout master #回到当前工作区(分支)

checkout回滚某个文件到commitid

git checkout <commit> <file> #会影响当前工作区文件

五、分支操作--合并分支

快速模式,head指针的移动(fast-forward),合并dev到当前分支

git merge dev #合并dev分支

普通模式(no ff),相当于head指针移动到新节点,保留合并历史分支。

git merge --no-ff -m "merge it" dev

六、标签的管理

查看标签列表

git tag

查看标签信息

git show v0.01
git show commit_id #查看某次提交的信息

打标

git tag v0.01

对某次commit打标

git tag v0.01 f45212545

git tag -a v0.01 -m "v0.01 release" f45212545 #包含文字说明

删除标签

git tag -d v0.01

将标签推送到远程,标签默认只存储到本地

git push origin <tagname>
git push origin --tags #推送所有标签

删除远程标签

git tag -d v0.01
git push origin :refs/tags/v0.01

七、其他

工作区暂存

git stash

查看暂存的工作区

git stash list

恢复暂存工作区,stash内容不删除

git stash apply
git stash apply <stash@{n}> #恢复到执行工作区 git stash drop #删除stash内容

恢复暂存工作区,stash内容自动删除

git stash pop
git stash pop <stash@{n}>

复制提交到当前分支,减少重复修改

git cherry-pick <commit>

同属必备系列文章:

vim命令:https://juejin.cn/post/6966772543919226887


文章有不足的地方欢迎在评论区指出。

欢迎收藏、点赞、提问。关注顶级饮水机管理员,除了管烧热水,有时还做点别的。

git命令使用(必备系列)的更多相关文章

  1. 转:【开源必备】常用git命令

    原文:https://zhuanlan.zhihu.com/p/25868120 [开源必备]常用git命令 [已重置]   如今在技术领域,码农们习惯了开源,也离不开免费开源的代码,轻松获取代码,不 ...

  2. 程序员必备基础:Git 命令全方位学习

    前言 掌握Git命令是每位程序员必备的基础,之前一直是用smartGit工具,直到看到大佬们都是在用Git命令操作的,回想一下,发现有些Git命令我都忘记了,于是写了这篇博文,复习一下~ https: ...

  3. Git入门到高级系列1-git安装与基础命令

    视频课程地址 腾讯课堂 为什么要进行项目文件的版本管理 代码备份和恢复 团队开发和协作流程 项目分支管理和备份 git 是什么? git是一个分布式的版本控制软件.版本控制是一种记录一个或若干文件内容 ...

  4. 【GIT】使用Git命令窗口将本地工程提交至远程GitHub

    目标: 1.解决的问题是如何通过Git命令窗口将本地工程提交至GitHub. 2.方便园友的同时也方便自己以后解决此类问题. 步骤: 1.首先登陆GitHub网站https://github.com/ ...

  5. 痞子衡嵌入式:第一本Git命令教程(0)- 索引

    大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家讲的是Git命令汇编,共12篇文章,循序渐进地介绍Git操作的完整过程. 在开始Git课程之前,需要先跟大家普及2个重要概念(四度空间.四种状 ...

  6. 痞子衡嵌入式:第一本Git命令教程(4)- 转移(add/rm/mv)

    今天是Git系列课程第四课,上一课我们在Git空间里做了一些文件改动并且知道了如何利用Git查看这些变动,今天痞子衡要讲的是将这些变动提交到Git本地仓库前的准备工作. Git仓库目录下的文件改动操作 ...

  7. 痞子衡嵌入式:第一本Git命令教程(6)- 日志(log/reflog/gitk)

    今天是Git系列课程第六课,上一课我们学会了Git本地提交,今天痞子衡要讲的是如何查看Git本地历史提交. 当我们在仓库里做了很多次提交之后,免不了需要回看提交记录,看看自己之前的改动.有三种Git命 ...

  8. 常用Git命令清单。

    上期传送门:[清单]7个管理和优化网站资源的工具 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下. Workspace:工作区 Index / Stage:暂存区 Repository: ...

  9. 常用git命令(一)

    git add 命令. 这是个多功能命令:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等. 将这个命令理解为“添加内容到下一次提交中”而不是“将一 ...

随机推荐

  1. Spring核心结构及核心思想

    Spring核心结构 基本概念 Spring是⼀个分层⾮常清晰并且依赖关系.职责定位⾮常明确的轻量级框架,主要包括⼏个⼤模块:数据处理模块.Web模块.AOP(Aspect Oriented Prog ...

  2. VS“无法查找或打开PDB文件”解决方法

    ``#运行时报错提示 "温度柱状图.exe"(Win32): 已加载"C:\Windows\SysWOW64\rpcrt4.dll".无法查找或打开 PDB 文 ...

  3. [源码解析] 并行分布式框架 Celery 之 Lamport 逻辑时钟 & Mingle

    [源码解析] 并行分布式框架 Celery 之 Lamport 逻辑时钟 & Mingle 目录 [源码解析] 并行分布式框架 Celery 之 Lamport 逻辑时钟 & Ming ...

  4. .NET平台系列10 .NET统一平台愿景

    系列目录     [已更新最新开发文章,点击查看详细] 2019年,微软分享了[统一的.NET堆栈和生态系统的愿景].给开发者带来的价值是,将能够使用一组API,语言和工具来针对广泛的应用程序类型,包 ...

  5. [bug]mysql: The server time zone value '&#214;&#208;&#185;&#250;&#177;&#234;&#215;&#188;&#202;&#177;&#188;&#228;' is unrecognized or represents more than one time zone

    原因: 时区设置有误 解决: 在mysql中修改时区设置: 或 在JDBC代码中增加时区设置: Connection c = DriverManager.getConnection("jdb ...

  6. 消息队列之 RabbitMQ【验证通过】

    消息队列之 RabbitMQ 预流 关注  22.9 2017.05.06 16:03* 字数 4884 阅读 284691评论 41喜欢 618赞赏 2 关于消息队列,从前年开始断断续续看了些资料, ...

  7. Linux硬件与服务

    Linux硬件与服务 Linux Linux硬件与服务 1 Linux磁盘管理与磁盘结构 磁盘的组成结构 盘片的逻辑结构 分区格式化 实例说明: 2 磁盘管理之Block.iNode. super.s ...

  8. MyBatis 各种参数传递方式

    MyBatis参数传递方式 情况一:Mapper映射器接口方法参数只有一个且为基本类型 接口方法: public List<UserEntity> selectUserByAge(int ...

  9. 灵动微电子ARM Cortex M0 MM32F0010 UART1和UART2中断接收数据

    灵动微电子ARM Cortex M0 MM32F0010 UART1和UART2中断接收数据 目录: 1.MM32F0010UART简介 2.MM32F0010UART特性 3.MM32F0010使用 ...

  10. [leetcode] 117. 填充同一层的兄弟节点 II

    117. 填充同一层的兄弟节点 II 与116. 填充同一层的兄弟节点完全一样,二叉树的层次遍历..这是这次不是完美二叉树了 class Solution { public void connect( ...