Git 使用方法(一)-本地篇

本文参考博客廖雪峰的官方网站整理而成

自报家门,设置本机信息

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
  • 注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
  • 自己的不同机器可以用同样的user.nameuser.email。不同机器产生的SSH Key是不同的。

初始化Git仓库

git init

添加文件到Git仓库,分两步:

  1. 使用命令git add <file>,注意,可反复多次使用,添加多个文件;
  2. 使用命令git commit -m <message>,完成。
  3. git add . 将当前git目录下的所有改变提交到暂存区

查看工作区的状态和改变

  • 要随时掌握工作区的状态,使用git status命令。
  • 如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
  • git diff终端变成查看模式,不能打命令了,此时按两下Esc然后按q即可输入命令。

版本穿梭

  • 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
  • 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
  • HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
    • 在Git中,用HEAD表示当前版本,也就是最新的提交1094adb...(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版
      本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

版本库(Repository)

  • 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
  • Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

管理修改

  • 提交后,用git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别
  • 提交的是add到暂存区stage的部分,没有add的部分修改不会被commit到最新版本。

撤销修改

git checkout -- <file>
命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

  • 一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
  • 一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commit或git add时的状态

git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区

小结:

  • 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- <file>
  • 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。
  • 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

删除文件

rm <file>删除文件,或者直接在资源管理器删除文件

  1. 确实要从版本库中删除该文件,那就用命令git rm <file>删掉,并且git commit:
    git rm test.txt
    git commit -m "remove test.txt"
  2. 删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
    git checkout -- test.txt
  3. git rm删除文件,那就相当于不仅删除了文件,而且还添加到了暂存区,如果想要恢复:
    git reset HEAD <file>
    git checkout -- <file>

Git 使用方法(一)-本地篇相关推荐

  1. Git使用方法(三)-小技巧篇

    Git使用方法(三)-小技巧篇 标签管理 发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本. 创建标签 命令git tag <tagname>用 ...

  2. 怎么用git将本地代码上传到远程服务器_TortoiseGit将本地git仓库上传到远程git服务器方法...

    以前为了图省事,通过TortoiseGit创建本地仓库(与git服务器无连接),对于个人使用确实比较方便,commit,revert,diff之类的功能都能够使用,并且速度也很快的.代码开发到一定阶段 ...

  3. 五⼤场景玩转 Git,只要这一篇就够了!

    推荐阅读: 编程神器 VS Code,只要这一篇就够了! 自由软件江湖里的码头和规矩 自己动手写一个操作系统内核[内含视频] 在浏览器中输入网址按回车后发生了什么? 智能制造:从信息化到智能化 一文透 ...

  4. IDEA全家桶式讲解 | IDEA安装、使用、断点调试、Git、插件 (第二篇)

    目录 一:JavaEE阶段需要掌握的IDEA技能 1. 配置Tomcat 2. 配置Maven 3. IDEA连接数据库 4. 方便的特殊功能 5. 断点调试(重点) 6. IDEA中常用Git协同开 ...

  5. 快速掌握GIt,看这几篇就好了(一)

    目录 一.Git简介 1. Git是什么 2. Git与SVN区别 2.1 去中心化 2.2 git仓库的任何一个拷贝都可以独立作为一个服务器来使用 2.3 在Git中文件有四种状态: 2.4 其它 ...

  6. 如何从当前Git工作树中删除本地(未跟踪)文件

    如何从当前工作树中删除未跟踪的本地文件? #1楼 如果未跟踪的目录是它自己的git存储库(例如,子模块),则需要使用-f两次: git clean -d -f -f #2楼 如果需要从特定子目录中删除 ...

  7. 【Vue】Vue入门 -(本地篇+网络篇)代码示例及运行效果

    一.Vue 可参考:Vue官方文档 Vue 将 DOM 元素看作是对象,可以将元素与Vue实例绑定,实现通过操作数据改变元素内容.不需要用 jQuery 手写各种各样的选择器了. 二.本地篇:Vue基 ...

  8. git学习笔记04-将本地仓库添加到GitHub远程仓库-git比svn先进的地方

    第1步:创建SSH Key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步. 如果没有,打开Shel ...

  9. 如何通过Git GUI将自己本地的项目上传至Github

    ithud是一个程序员以后成长都会使用到的,先不说很多优秀的开源框架都在这上面发布,光是用来管理自己的demo都已经让人感到很方便,用得也很顺畅.而真正让我下定决心使用github的原因是因为两次误操 ...

最新文章

  1. Oracle Database 11.2.0.1(静默安装)
  2. Hadoop之Storm命令
  3. Qt Creator添加Qt Designer插件
  4. C++宏定义中#与##的妙用
  5. 扩展iQuery使其支持多种编程语言(二) – 兼编译器的语法分析简介
  6. 获取Java接口的所有实现类
  7. 数百万行自研代码都捐了,华为将欧拉捐赠给开放原子开源基金会
  8. Java并发包中Semaphore的工作原理、源码分析及使用示例
  9. 2022年中国足球球迷行为洞察白皮书
  10. axure9数据统计插件_数据分析太棘手?常用8大统计软件解决难题!
  11. 深入理解Yii2.0(yii学习的经典博客)
  12. RestTemplate 配置http连接池
  13. OpenCV-图像处理(03、Mat对象)
  14. 如何使用数据库保存文件
  15. Linux编程:获取时间戳
  16. 计算机视觉技术与应用综述
  17. 最详细的 tf.cholesky_solve(chol, rhs, name=None)函数和tf.matrix_solve(matrix, rhs, adjoint=None, name=None)
  18. java 10000以内的质数_10000以内有多少质数
  19. 国内怎么使用chatGpt
  20. VBA小程序_对于选中的单元格进行取消合并_选择空值向上填充

热门文章

  1. bzoj 1005: [HNOI2008]明明的烦恼(prufer数列)
  2. opencv 创建调色板
  3. jquery基本过滤选择器:first :last :not(.myclass) :even :odd :eq(1) :gt(5) :lt(1) :header :animated :focus
  4. Image-to-Image Translation with Conditional Adversarial Networks
  5. 荣耀10 原版android,荣耀V10新内置壁纸
  6. linq操作符:分区操作符
  7. spring-mvc文件上传与下载
  8. Android数据库框架-ORMLite
  9. 080 HBase的属性
  10. alter table锁表,MySQL出现Waiting for table metadata lock的场景浅析及解决方案