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. 【死磕JVM】用Arthas排查JVM内存 真爽!我从小用到大

    Arthas是啥 当我们系统遇到JVM或者内存溢出等问题的时候,如何对我们的程序进行有效的监控和排查,就发现了几个比较常用的工具,比如JDK自带的 jconsole.jvisualvm还有一个最好用的 ...

  2. printf/scanf格式

    (1)打印字符 char c; printf("%c",c); (2)打印整形 int i; printf("%d",i); //有符号十进制数 printf( ...

  3. mysql整型后面的()宽度

    int(5)这个5表示显示宽度 如果超出宽度则正常显示,所以人为指定显示宽度意义不大

  4. Apache Hudi集成Spark SQL抢先体验

    Apache Hudi集成Spark SQL抢先体验 1. 摘要 社区小伙伴一直期待的Hudi整合Spark SQL的PR正在积极Review中并已经快接近尾声,Hudi集成Spark SQL预计会在 ...

  5. 2Spring对象创建小结

    Spring的对象创建 Spring学习笔记 周芋杉2021/5/15 原理:工厂设计模式,通过反射创建对象. Spring工厂分类 非web环境:ClassPathXmlApplicationCon ...

  6. ES6中函数参数默认值问题

    参数默认值 // 以前的参数默认值写法 let fn = (a, b) => { a = typeof a === "undefined" ? 10 : a b = type ...

  7. 【转载】在python的class中的,self到底是什么?

    在python的class中的,self到底是什么?   答案:self可以理解为一个字典变量,内部存的就是对象的数据属性.如:{'name':'zhang','age':'18'}就是这些. 注意只 ...

  8. CentOS 7 设置日期和时间 timedatectl

    CentOS 7 设置日期和时间 在CentOS 6版本,时间设置有date.hwclock命令,从CentOS 7开始,使用了一个新的命令timedatectl. timedatectl [root ...

  9. linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合:

    linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合: ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head linux下获取占用 ...

  10. 一看就懂的 安装完ubuntu 18.04后要做的事情和使用教程

    一看就懂的 安装完ubuntu 18.04后要做的事情和使用教程原创CrownP 最后发布于2019-02-05 00:48:30 阅读数 2982 收藏展开1.更改为阿里云的源点击软件和更新 点击其 ...