欢迎关注方志朋的博客,回复”666“获面试宝典

这篇文章系统性的总结下 git 常见命令的使用方法。

1. 背景需求

今年以来帮助实验室的博士生做了两篇论文的实验。做 paper 的实验有一个特点:需求会经常变动,经常是这种方法效果不行,那就需要换另外一种方法进行试验。导致的结果就是代码会经常变动,并且这次改动之后以后还有可能需要改动回来,因为一直没有用上 git,所以就显得代码非常混乱。

最后非常尴尬的局面就是:今天需要尝试下这个方法能不能 work,需要将整个项目的代码过一遍,保证当前的代码、当前需要执行的程序、当前的参数是和这个需求符合的;明天可能又换了一种方法;后来又需要重新切换会第一天的方法,又得整个把代码给过一遍,将一些注释给重新注释回来,反正就是非常非常麻烦,人工一遍一遍进行代码控制非常累。

但是在实验过程中间又不想去使用新的技术,即使使用 git 是一件非常直觉的事情,知道 deadline 也没有用 git 来管理项目代码……

paper 投出去之后,就觉得将 git 使用熟练真的太太太重要了。

2. 常见命令使用方法

创建一个 git 仓库

手下,我们可以在 github 上面找到任意一个 repository,在本地 git clone 下来(注意,不是下载 github 上面的 .zip 压缩包),那么这个项目对应的文件夹本身就是一个 git repository。

如果我们从零开始创建 git 仓库,也很简单,先新建一个文件夹,进入文件夹,然后:

git init

就会在当前文件夹下面生成 .git 文件夹,默认是不可见的。这个 .git 就是用来存储我们对目录文件的所有操作历史的。

git add & git commit

这里首先需要解释下 git 的工作原理,如下图所示:

当我们使用 git add xxx.txt 命令时,当前对 xxx.txt 的修改将会被提交到 staging area;接着当我们继续使用 git commit -m "message" 时,这个修改才会被提交到 repository。

  • add 单个文件:

git add xxx.txt # xxx.txt 是文件名
  • add 多个文件

git add * # or git add .

git commit 时必须要带入提交信息(commit message):

git commit -m "your message about this commit"

git status & git diff

要查看当前 repository 的状态:

git status

如果要查看某个文件前后两次修改的差异:

git diff xxx.txt

git log & git reflog

查看我们 commit 的历史,可以:

git log

因为 git log 输出的信息很多,如果只想要简洁的输出,可以:

git log --pretty=oneline

假设我们现在有这样一串提交历史:

a1 -> a2 -> a3 -> a4 -> a5

我们从 a5 回退到 a3,这时候使用 git log 将只能查看到 a1 a2 a3 这 3 次的提交历史,a4 a5 的提交历史是查看不到的。这时候,如果我们改变主意,又想从 a3 回到 a5 该怎么办呢,就可以使用:

git reflog

可以查看所有的提交历史记录。我们只需要知道我们在 a5 时的 commit message 然后找到对应的 commit id,就可以回退到 a5

下面具体讲怎么进行版本回退或者版本切换。

git reset

和之前一样,假如我们有下面这一串 commit 的历史,我们希望从 a5 回退到 a3

a1 -> a2 -> a3 -> a4 -> a5

首先在 a5 我们输入 git log 查看 a3 对应的 commit id,是一段很长的字母数字序列,假设前 4 位是 ab42,并且在所有的 commit id 里面是唯一的(方便我们做简写)。

接着执行:

git reset --hard ab42 # commit id 不用写全,写明能够标识该 commit id 的前几位即可

我们还有更方便的方法,可以不用知道 commit id :

git reset --hard HEAD^^

其中 HEAD^^ 标识我们切换会上上一个版本。如果指向切换为上一个版本,也就是 a4,那可以:

git reset --hard HEAD^

来源:https://tanjuntao.github.io/

热门内容:
  • 比 Xshell 还好用的 SSH 客户端神器,MobaXterm 太爱了!

  • RedisJson 横空出世,性能碾压ES和Mongo!

  • 短信验证码最佳实践

  • 厉害了!不重启JVM,替换掉已经加载的类

最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

明天见(。・ω・。)ノ♡

Git 常用命令,每条都很重要!相关推荐

  1. git常用命令,分支操作,子模块

    Git 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如:linux kernel),管理私人的文档和源代码也有很多优势(如:wsi-lgame-pro) 二. Git 常用 ...

  2. Git常用命令(汇总)

    Git常用命令及方法大全 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下. Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) R ...

  3. Git(笔记三)---Git常用命令

    目录 目录 1. Git常用命令 1.1 环境配置 1.2 获取Git仓库 1.2.1在本地初始化一个Git仓库 1.2.2从远程仓库克隆 1.3工作目录.暂存区以及版本库概念 1.3.1 三者关系 ...

  4. Git使用 从入门到入土 收藏吃灰系列(三) Git常用命令

    文章目录 一.前言 二.常用的命令 一.前言 参考安装Git 详细安装教程 参考视频B站 Git最新教程通俗易懂,这个有点长,感觉讲的精华不多 参考视频『Git』知道这些就够了_哔哩哔哩_bilibi ...

  5. Git 常用命令详解(二)

    2019独角兽企业重金招聘Python工程师标准>>> Git 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如:linux kernel),管理私人的文档 ...

  6. Git的使用——Git 常用命令总结、Git的使用、Git 的分支、远程仓库的使用、IDEA 中使用Git、Git 工作流(Git Flow、Github Flow、GitLab Flow)

    Git的使用--Git 常用命令总结.Git的使用.Git 的分支.远程仓库的使用.IDEA 中使用Git 一.Git 常用命令总结 为了方便后续查找命令,故先把总结放前面,教程放后面 1.git 基 ...

  7. git常用命令总结 以及与svn的比较

    1.本地库初始化: git init 在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个repo,并在当前文件夹下创建一个.git文件夹. 用 ls -lA 命令可查看.gi ...

  8. 几张图就能轻松掌握Git常用命令和原理

    Git介绍 本质上,Git是一套内容寻址(content-addressable)文件系统,而和我们直接接触的Git界面,只不过是封装在其之上的一个应用层.这个关系颇有点类似于计算机网络中应用层和下属 ...

  9. 【转载】Git 常用命令大全

    一. Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态  git commit 提交  git branch -a 查看所有的分支 git branch ...

  10. Git常用命令和Git团队使用规范指南

    1. 前言 在2005年的某一天,Linux之父Linus Torvalds 发布了他的又一个里程碑作品--Git.它的出现改变了软件开发流程,大大地提高了开发流畅度,直到现在仍十分流行,完全没有衰退 ...

最新文章

  1. 返乡置业?多数人将掉入陷阱
  2. 杭电oj1072java实现bfs
  3. IOS静态库生成及测试
  4. JSON补丁:JSON-P 1.1概述系列
  5. 失落城堡获取服务器信息,《失落城堡》精英服资格获取方法 失落城堡精英服招募...
  6. Objective-C 一些很基础的总结
  7. deap软件结果分析_绿港科技之窗:基于InDel标记的黄瓜种质资源遗传多样性分析...
  8. openlayers3 根据经纬度 自动画框_自动驾驶定位为什么少不了惯性导航?
  9. Java中的系统类–属性,System.out.println()
  10. 迭代器修改元素_设计模式-迭代器模式
  11. C语言根号下ln怎么表示,c语言ln根号x
  12. 元学习—MAML模型Pytorch实现
  13. 如何将iPhone投屏到Mac电脑上?
  14. matlab失明的小猫,从小失明的小猫,手术后第一次见到猫妈妈,场面让人泪崩!...
  15. 开源一个自动录制直播上传投稿的项目
  16. 如何让手机1秒打开健康码?
  17. 如何在网页端登录企业邮箱修改密码?
  18. python操作键盘输入中文_用python从键盘读取原始输入
  19. 智能中子混音插件:iZotope Neutron 3 Advanced for mac
  20. java酒吧系统源代码_bar 小型酒吧在线管理系统,后台用户名和密码都是admin Jsp/Servlet 238万源代码下载- www.pudn.com...

热门文章

  1. for循环 lamda python_Python中if-else判断语句、while循环语句以及for循环语句的使用...
  2. shiro实战系列(一)之入门实战
  3. HTML5 3D旋转图片相册
  4. 64位 ubuntu android studio gradle 权限不够 缺少文件和权限导致
  5. Android动态加载jar/dex
  6. JSONP--解决ajax跨域问题
  7. 【怎样写代码】函数式编程 -- Lambda表达式(一):引出
  8. AI修复100年前晚清影像喜提热搜,这两大算法立功了
  9. 从概念到技术,打通「中台」的任督二脉,别再说不知道中台是什么
  10. 首次!腾讯全面公开整体开源路线图