Git 两分钟指南

2023-11-05

受到Git五分钟指南的启发,我决定更进一步,写一篇更短时间内就能看完的Git教程。当然,这是指最简单的Git!但是对于新手个人开发者来说足够了,同时也给你提供一个可以继续深入的起点。

能够从本指南有所收获的例子也许是这样的,一个高中生正在进行他(或是她)的第一个项目,而且并不需要和别人分享代码。(具体讲其实是我儿子,他已经写了很多代码,但是没有时间去学习一个版本控制工具。这份指南是为他写的,当然我觉得别人也能用的到。)对他来说,使用Git是很有意义的。和Subversion不同,他不需要一个服务器,就可以很容易地使用Git(只要他对硬盘进行定期备份,当然,他确实也在这么做)。正好在一个两分钟的指南中,没有时间去涉及服务器的事情,所以这篇指南对类似我儿子这种情况特别合适。

再次强调,本文提及的Git使用方法,仅对那些会定期备份硬盘的个人开发者来讲是合适的。两分钟Git指南加上一个备份策略,你可以自信的提交文件并且知道如果自己需要的话,你可以查看改动或是恢复之前的版本。

为什么学习Git如此有必要?好吧,对于开发者来讲,最烦人、最耗费时间的事情就发现之前可以工作的程序现在无法工作了。在这种情况下,能够看到之前的改动并且回退到之前的版本会有很大的帮助。同样的,能够回退到之前的状态可以让你自由的测试新的方法–做实验完全没有问题因为你总是可以重来。

如果有机会的话,你绝对应该学一下暂存(staging)和分支(branching),还有向(从)远端仓库上传(pushing)和获取(pulling)。但是你下面要学到的东西同样很有用。 注意:下面提到的文件名,你都可以使用文件路径。

使用前的设置

如果你还没有安装git的话,请查看 Getting Started page上的安装指南。 第一次使用git,我们假定你正在一个文件夹内工作,该文件夹是你项目的主文件夹。你需要做的第一件事情是用下面这条命令来初始化文件夹供Git使用。

  
  
  1. git init

告诉git你要处理的文件

现在你需要告诉git,需要考虑哪些文件。如果你有N个文件,你可以使用

  
  
  1. git add <file1> <file2> <fileN>

来添加他们。或是你想要把目录下的文件全部添加,你可以使用

  
  
  1. git add .

句号是命令的一部分,表示当前目录。

提交改动

下一步,我们需要提交改动。任何时候,你想要提交一个文件或多个文件的改动,运行

  
  
  1. git commit <file1> <file2> <fileN> -m This is your commit message

或者,提交全部有改动的文件:

  
  
  1. git commit -a -m This is your commit message for all changed files

确保你的提交信息能够包含足够的描述信息,让你可以搞清楚你想要回退到哪个版本。

查看历史

现在你需要一个查看旧版本的方法。为了查看提交信息和该次提交的hash值(代表版本的一串数字)可以使用如下命令,使其以每行一个版本的方式输出

  
  
  1. git log --pretty=oneline

它的输出看起来是下面这样的,每次提交的hash值和它的提交信息一起显示

  
  
  1. dbe28a0a1eba45d823d309cc3659069fc16297e3 4th version I wanted to commit
  2. 13bbf385e6d1f94c7f11a4cdfa2a7688dfdd84f8 3rd
  3. a1696f671fb90dc8ea34645a6f851d0ab0152fc2 2nd versio
  4. 179e59467039c7a7b81f676297415c8e018542a0 first version

注意,你同样可以使用

  
  
  1. git log

来输出一个更冗长的信息,每个版本信息占用多行,而且你可以使用

  
  
  1. git log --pretty=oneline -- <filename>

来查看某个具体文件的改动。(注意第二个–后面的空格!)

恢复旧版本

恢复之前版本的文件,你只需要使用hash值的前几个数字(要保证足够的区分度):

  
  
  1. git checkout <hash> -- <filename>

比如

  
  
  1. git checkout 179e59467039 -- myfile

会把我的名为myfile的文件的内容回退到179e59467039c7a7b81f676297415c8e018542a0这个状态(这里是指本文件的第一次提交版本)

查看改动

通常你不会不先查看一下文件变化就回退到旧的版本!查看文件当前版本和历史版本的区别,你需要指明历史版本的hash值:

  
  
  1. git diff <hash> -- <filename>

你同样可以比较两个历史版本的差别:

  
  
  1. git diff <hash1> <hash2> -- <filename>

还有一件事——可选项——也许会让本文多一分钟

也许您仅仅使用以上功能就可以受益匪浅,你会发现还有一件事是很有用的。如果你现在不想看的话,就别看了——找机会下次再看。 有时候,你不清楚有哪些文件被改动了。你可以使用如下命令找到它们:

  
  
  1. git status

这会生成一份文件列表以及他们的状态。比如,一个还没有被’git add’ 的文件会被显示为`untracked`;如果你想要追踪这个文件,就需要添加它。 在我的两分钟教程中,我把这个命令当做可选项的原因是,这个命令可能会有点笨拙。因为它可能会列出很多你并不关心的文件的状态。举例来说,如果你使用Python语言编程,它会列出Python生成的编译文件.pyc。你肯定想解决这一问题。

为了解决这个问题,你需要在目录下创建一个叫`.gitignore` 的文件。比如你在使用Python 2.x的项目,你会希望在这个文件中(至少)包含:

  
  
  1. *.pyc

注意,.gitignore` 可以理解*通配符。如果你想要隐藏一个完整的目录,你要在文件夹名后面加一个斜杠。例如你使用Python 3.x编程,所有的便以文件都会进入一个叫__pycache__ 的文件夹,所以你需要在.gitignore中添加

  
  
  1. __pycache__/

这就是本教程! 把这份教程放在手边就行啦

这些就是你开始使用git所需要知道的东西,只要你有定期备份硬盘的习惯。如果你不想要记忆除了提交命令以外的其他东西,仅需要把本教程保存进书签,你就可以无障碍的提交,对比版本,回退到旧版本! 记住,本教程准确来讲是最小化教程,让你可以用Git做一些有用的事情。对于分支,暂存和通过远程服务器和他人共享代码这些强大的功能,请务必去看五分钟Git教程,如果有机会甚至应该去看更长的教程

原文:http://www.garyrobinson.net/2014/10/git-in-two-minutes-for-a-solo-developer.html作者: Gary Robinson
译文: http://blog.jobbole.com/78999/译者: Lingfeng Ai
本文为转载,如需再次转载,请查看 “blog.jobbole.com” 要求。 


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git 两分钟指南 的相关文章

  • 《移动浪潮》读书笔记

    移动浪潮 一书深入浅出地解读了信息革命第五次浪潮即将为人们生活带来的巨变 首先论述移动的力量 它是一股无法阻挡的浪潮 将引发颠覆性的革命 随后从电脑逐渐小型化 纸张的消失 娱乐的自由 钱包 社交网络 医疗 教育乃至工农业等方方面面论述移动互
  • 线程池参数

    一 ThreadPoolExecutor核心参数说明 1 corePoolSize 核心线程数 核心线程会一直存活 及时没有任务需要执行 当线程数小于核心线程数时 即使有线程空闲 线程池也会优先创建新线程处理 设置allowCoreThre
  • shell判断一个变量是否为空

    shell判断一个变量是否为空 author 润明 2012 2 1 QQ 226399587 http blog csdn net runming918 判断一个变量是否为空 1 变量通过 引号引起来 如下所示 可以得到结果为 IS NU
  • 数据库管理系统

    1 数据库 DB 指长期保存在计算机的存储设备上 按照一定规则组织起来 可以被各种用户或应用共享的数据集合 2 数据库管理系统 DBMS 指一种操作和管理数据库的大型软件 用于建立 使用和维护数据库 对数据库进行统一的管理和控制 以保证数据
  • 工具使用 [ idea远程服务断点调试 ]

    目录 1 概述 1 1 远程代码调试 1 1 1 idea配置 1 1 2 准备HTTP接口 1 1 3 启动远程服务 1 概述 在开发的过程当中 断点调试是我们比较常用的操作 不管是用来解析代码流程 还是用来排查程序错误 都会去使用到断点
  • 高校俱乐部审核期长安大学星辰同学参观CSDN总部

    7月15日早上北京大雨瓢泼 一大早就接到长安大学星辰同学的消息 要来CSDN与我们交流学习 星辰同学填完加入高校俱乐部申请信息后 我们是通过电话和qq与他联系的 据他所说是他的家人推荐他申请加入CSDN高校俱乐部 并且能够增加经验和锻炼能力

随机推荐

  • echarts饼图,自定义legend,解决legend字数太多和太长的问题,翻页处理

    echarts饼图 自定义legend 解决legend字数太多和太长的问题 翻页处理 https blog csdn net weixin 43899935 article details 107185591 版权 tooltip tri
  • 测试中遇到的问题总结

    一 后端问题 数据库存储相关 1 做更新操作后 发现数据没更新 根因 先读取后更新 解决方案 更新再读取 2 缓存数据未及时更新 导致操作不成功 及时更新缓存数据 正常情况在 一分钟内会将数据库数据同步到缓存 如果用户在一分钟之内同时操作了
  • mmdetection 环境配置mmcv和pytorch对照

    版本一 old mmdetection v1 1 0 python 3 7 9 Driver Version 440 33 01 CUDA Version 10 2 mmcv 0 4 3 mmdet 1 1 0 51df8a9 root d
  • IntelliJ IDEA 详细使用教程 – 主题,字体,类和方法注释设置

    IDEA是Java开发者最喜爱的开发工具之一 高端大气 智能化 个性化 每个开发者都喜欢设置自己喜欢的主题 字体 打造一个属于自己的IDE 本次介绍在IDEA中 如何设置主题 字体等样式 和添加类 方法注释 Windows用户直接点击菜单看
  • python接口自动化测试 ( 第三章)

    如果你不太明白这篇文章是做什么的 点击下方进入介绍篇 点击跳转到介绍篇 你可以知道自己能收获什么 和将要做的功能点和是否值得学习 别再迷茫了 不日进 则日退 学习才是你应该做的事情 进入介绍篇了解你将要走的路 python接口自动化测试 第
  • abapdata定义方法_ABAP中types与data,type与like的区别

    1 types与data区别 types是用来自定义某种类型的 需要data实例化才能使用 data是用来声明基本类型数据对象 也就是实例变量 对于用data直接定义的结构体对象 不参照其它结构类型 参照自定义类型生成新数据语法格式 TYP
  • 快速记忆电阻器色环值

    快速记忆电阻器色环值 觉得有用麻烦点个赞哦 开始正文 最近准备电设 看到电阻器11种色环 实在难记 因此花了我整整5 分钟 想出了一个快速记忆的方法 直接上图 上图是标准色环和阻值对应表 下面是我的简记方法 1 谐音组词记忆yyds 2 简
  • Mysql 主从复制

    简述 start slave show slave status G stop slave reset slave delete relay log create relay log reset master delete bin log
  • langchain包下载安装以及基本使用的注意事项

    当我们使用import langchain导入包是需要先下载langchain这个包 注意事项 我们的python版本必须大于等于3 8 1 否者将会导致 cannot import name RecursiveCharacterTextS
  • python三维点云投影(一)

    本文为博主原创文章 未经博主允许不得转载 本文为专栏 python三维点云从基础到深度学习 系列文章 地址为 https blog csdn net suiyingy article details 124017716 一 立体几何基础知识
  • MySQL的多表查询

    目录 多表关系 一对多 多对多 一对一 多表查询概述 分类 显示内连接 外连接 左外连接 右外连接 自连接 联合查询 子查询 分类 标量子查询 列子查询 行子查询 表子查询 多表关系 项目开发中 在进行数据库表结构设计时 会根据业务需求及业
  • 链表介绍

    链表介绍 链表与顺序表一样 也属于线性表 一个线性表是某类数据元素的一个集合 表里同时记录着元素之间的顺序关系 线性表的数据之间有顺序关系 顺序关系分为两种 一种是物理有序 即数据物理存储的位置顺序与数据之间的顺序关系一致 另一种是逻辑有序
  • VS Stuidio 2019实用调试技巧

    VS Studio 2019实用调试技巧 1 debug和release的区别 2 调试 1 调试最常使用的几个快捷键 2 用监视窗口查看临时变量的值 3 查看内存信息 4 查看调用堆栈 5 查看汇编信息 6 查看寄存器信息 3 如何写出易
  • 总结Python设置Excel单元格样式的一切,比官方文档还详细

    总结Python设置Excel单元格样式的一切 比官方文档还详细 Python对Excel表格处理非常方便 本文专门对Excel单元格样式设置进行总结 日常用到的设置基本都可以用openpyxl库完成 创建一个表格 openpyxl是第三方
  • 多项式轨迹--五次多项式轨迹

    转自 https blog csdn net libing403 article details 78715418 多项式轨迹 五次多项式轨迹 1 5 Polynomial of degree five 利用三次多项式 根据过q0 q1 q
  • 祝:天下码农中秋节快乐

    祝 天下码农中秋节快乐
  • 13.2 C语言风格的for命令、while命令和until命令

    C语言风格的for命令 在C语言中 for循环通常定义ige变量 然后这个变量会在每次迭代时自动改变 c语言的for命令 C语言的for命令有一个用来指明变量的特定方法 一个必须保持成立才能继续迭代的条件 以及另一个在每个迭代中改变变量的方
  • 算法设计与分析 动态规划 习题

    3 1 满足递归式F n F n 1 F n 2 和初始值F 0 F 1 1的数列称为斐波那契数列 考虑如何计算该数列的第n项F n 1 说明根据递归式直接完成计算 将有子问题重复求解 2 说明该问题具有优化子结构 3 写出求解F n 的动
  • 用matlab表白,你有一颗爱她的心,你就画出来

    恋爱过恋爱过程中 女生往往需要许多小惊喜 下面我教大家一种用matlab表白的一小段程序 画出一个火热的心 loving heart x y z x 2 9 4 y 2 z 2 1 3 3 x 2 z 3 9 80 y 2 z 3 爱心三维
  • Git 两分钟指南

    原文 http www garyrobinson net 2014 10 git in two minutes for a solo developer html作者 Gary Robinson 译文 http blog jobbole c