热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Git简洁教程之:基本操作

初始化并提交文件创建初始化目录mkdirlearngit初始化仓库gitinit在learngit下创建文件,并提交到本地仓库gitaddreadme.
初始化并提交文件
  • 创建初始化目录 mkdir learngit
  • 初始化仓库
    git init
    技术分享
  • 在learngit下创建文件,并提交到本地仓库
    git add readme.txt
    git commit -m "wrote a readme file"
    技术分享
  • 也可以通过*的方式一次性添加过个文件,下面的截图一次性添加了两个以readme开头的txt文件
    技术分享

文件的修改与提交
  • 修改readme.txt文件,在文件中加入下面的内容
    Git is a distributed version control system. 
    Git is free software.
  • 查看状态 git status
    技术分享

  • 对比文件 git diff readme.txt
    技术分享
  • 提交文件git add readme.txt
  • 参看状态,显示readme.txt将要被提交
    技术分享
  • git commit -m ‘test‘
  • git status,提示没有要提交的文件了,工作目录是清洁的
    技术分享

版本回退
  • 通过git log查看日志
技术分享
  • 通过git log --pretty=oneline查看简明版的日志
    技术分享
  • 通过git reset --hard 609c9 跳转到指定的版本,此时HEAD指针指向该版本,609c9之前的版本信息已经从git log 或是gitk中消失
    也可以通过git reset --hard HEAD^的方式跳转到上一个版本,HEAD^^的方式前两个版本,HEAD~N的方式跳转到前N个版本
    技术分享
  • 跳转之后如果想要再回到latest version,此时如果关闭了命令行,该版本的commit id 就会消失,为了找到对应的commit id,
    可以使用git reflog 查看操作的记录,如果想要回到latest version的版本,就执行git reset --hard da5e02f
    技术分享
暂存区

我们把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区(Stage);

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

管理修改

当对一个文件进行修改的时候,如果操作的顺序为 第一次修改 -> git add -> 第二次修改 -> git commit

由于Git管理的是修改,当用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。

那怎么提交第二次修改呢?你可以继续git addgit commit,也可以别着急提交第一次修改,先git add第二次修改,再git commit,就相当于把两次修改合并后一块提交了:

第一次修改 -> git add -> 第二次修改 -> git add -> git commit

撤销修改
  • 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
    下面的一个例子演示当修改了某个文件后,通过执行git checkout -- readme.txt 命令将文件还原
    技术分享
  • 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file 撤销stage区的内容,就回到了场景1,第二步按场景1操作。
    技术分享
  • 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,可以使用reset命令,不过前提是没有推送到远程库。
 删除文件
  • 在操作系统下删除文件 rm readme.txt
  • 使用git checkout -- readme.txt 还原文件
  • 如果确认删除文件,执行 git rm readme.txt 以及 git commit -m ‘confirm delete a file‘

Git 简洁教程之:基本操作


推荐阅读
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 解决TensorFlow CPU版本安装中的依赖问题
    本文记录了在安装CPU版本的TensorFlow过程中遇到的依赖问题及解决方案,特别是numpy版本不匹配和动态链接库(DLL)错误。通过详细的步骤说明和专业建议,帮助读者顺利安装并使用TensorFlow。 ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • 深入理解ExtJS:从入门到精通
    本文详细介绍了ExtJS的功能及其在大型企业前端开发中的应用。通过实例和详细的文件结构解析,帮助初学者快速掌握ExtJS的核心概念,并提供实用技巧和最佳实践。 ... [详细]
  • 通常情况下,修改my.cnf配置文件后需要重启MySQL服务才能使新参数生效。然而,通过特定命令可以在不重启服务的情况下实现配置的即时更新。本文将详细介绍如何在线调整MySQL配置,并验证其有效性。 ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • 本文探讨了C++编程中理解代码执行期间复杂度的挑战,特别是编译器在程序运行时生成额外指令以确保对象构造、内存管理、类型转换及临时对象创建的安全性。 ... [详细]
  • 探索新一代API文档工具,告别Swagger的繁琐
    对于后端开发者而言,编写和维护API文档既繁琐又不可或缺。本文将介绍一款全新的API文档工具,帮助团队更高效地协作,简化API文档生成流程。 ... [详细]
  • 本文探讨了在构建应用程序时,如何对不同类型的数据进行结构化设计。主要分为三类:全局配置、用户个人设置和用户关系链。每种类型的数据都有其独特的用途和应用场景,合理规划这些数据结构有助于提升用户体验和系统的可维护性。 ... [详细]
  • Linux中的yum安装软件
    yum俗称大黄狗作用:解决安装软件包的依赖关系当安装依赖关系的软件包时,会将依赖的软件包一起安装。本地yum:需要yum源,光驱挂载。yum源:(刚开始查看yum源中的内容就是上图 ... [详细]
  • CentOS 系统管理基础
    本文介绍了如何在 CentOS 中查询系统版本、内核版本、位数以及磁盘分区的相关知识。通过这些命令,用户可以快速了解系统的配置和磁盘结构。 ... [详细]
  • 本文详细探讨了 PHP 中 method_exists() 和 is_callable() 函数的区别,帮助开发者更好地理解和使用这两个函数。文章不仅解释了它们的功能差异,还提供了代码示例和应用场景的分析。 ... [详细]
  • 本文详细介绍了如何解决 Microsoft SQL Server 中用户 'sa' 登录失败的问题。错误代码为 18470,提示该帐户已被禁用。我们将通过 Windows 身份验证方式登录,并启用 'sa' 帐户以恢复其访问权限。 ... [详细]
  • ListView简单使用
    先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ... [详细]
  • 本文详细介绍了一种高效的算法——线性筛法,用于快速筛选出一定范围内的所有素数。通过该方法,可以显著提高求解素数问题的效率。 ... [详细]
author-avatar
手浪用户2602915623
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有