Git 使用方法(一)-本地篇
Git 使用方法(一)-本地篇
本文参考博客廖雪峰的官方网站整理而成
自报家门,设置本机信息
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
- 注意
git config
命令的--global
参数,用了这个参数,表示你这台机器上所有的Git
仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和- 自己的不同机器可以用同样的
user.name
和user.email
。不同机器产生的SSH Key
是不同的。
初始化Git仓库
git init
添加文件到Git仓库,分两步:
- 使用命令
git add <file>
,注意,可反复多次使用,添加多个文件;- 使用命令
git commit -m <message>
,完成。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>
删除文件,或者直接在资源管理器删除文件
- 确实要从版本库中删除该文件,那就用命令
git rm <file>
删掉,并且git commit
:
git rm test.txt
git commit -m "remove test.txt"
- 删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
git checkout -- test.txt
git rm
删除文件,那就相当于不仅删除了文件,而且还添加到了暂存区,如果想要恢复:
git reset HEAD <file>
git checkout -- <file>
Git 使用方法(一)-本地篇相关推荐
- Git使用方法(三)-小技巧篇
Git使用方法(三)-小技巧篇 标签管理 发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本. 创建标签 命令git tag <tagname>用 ...
- 怎么用git将本地代码上传到远程服务器_TortoiseGit将本地git仓库上传到远程git服务器方法...
以前为了图省事,通过TortoiseGit创建本地仓库(与git服务器无连接),对于个人使用确实比较方便,commit,revert,diff之类的功能都能够使用,并且速度也很快的.代码开发到一定阶段 ...
- 五⼤场景玩转 Git,只要这一篇就够了!
推荐阅读: 编程神器 VS Code,只要这一篇就够了! 自由软件江湖里的码头和规矩 自己动手写一个操作系统内核[内含视频] 在浏览器中输入网址按回车后发生了什么? 智能制造:从信息化到智能化 一文透 ...
- IDEA全家桶式讲解 | IDEA安装、使用、断点调试、Git、插件 (第二篇)
目录 一:JavaEE阶段需要掌握的IDEA技能 1. 配置Tomcat 2. 配置Maven 3. IDEA连接数据库 4. 方便的特殊功能 5. 断点调试(重点) 6. IDEA中常用Git协同开 ...
- 快速掌握GIt,看这几篇就好了(一)
目录 一.Git简介 1. Git是什么 2. Git与SVN区别 2.1 去中心化 2.2 git仓库的任何一个拷贝都可以独立作为一个服务器来使用 2.3 在Git中文件有四种状态: 2.4 其它 ...
- 如何从当前Git工作树中删除本地(未跟踪)文件
如何从当前工作树中删除未跟踪的本地文件? #1楼 如果未跟踪的目录是它自己的git存储库(例如,子模块),则需要使用-f两次: git clean -d -f -f #2楼 如果需要从特定子目录中删除 ...
- 【Vue】Vue入门 -(本地篇+网络篇)代码示例及运行效果
一.Vue 可参考:Vue官方文档 Vue 将 DOM 元素看作是对象,可以将元素与Vue实例绑定,实现通过操作数据改变元素内容.不需要用 jQuery 手写各种各样的选择器了. 二.本地篇:Vue基 ...
- git学习笔记04-将本地仓库添加到GitHub远程仓库-git比svn先进的地方
第1步:创建SSH Key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步. 如果没有,打开Shel ...
- 如何通过Git GUI将自己本地的项目上传至Github
ithud是一个程序员以后成长都会使用到的,先不说很多优秀的开源框架都在这上面发布,光是用来管理自己的demo都已经让人感到很方便,用得也很顺畅.而真正让我下定决心使用github的原因是因为两次误操 ...
最新文章
- Oracle Database 11.2.0.1(静默安装)
- Hadoop之Storm命令
- Qt Creator添加Qt Designer插件
- C++宏定义中#与##的妙用
- 扩展iQuery使其支持多种编程语言(二) – 兼编译器的语法分析简介
- 获取Java接口的所有实现类
- 数百万行自研代码都捐了,华为将欧拉捐赠给开放原子开源基金会
- Java并发包中Semaphore的工作原理、源码分析及使用示例
- 2022年中国足球球迷行为洞察白皮书
- axure9数据统计插件_数据分析太棘手?常用8大统计软件解决难题!
- 深入理解Yii2.0(yii学习的经典博客)
- RestTemplate 配置http连接池
- OpenCV-图像处理(03、Mat对象)
- 如何使用数据库保存文件
- Linux编程:获取时间戳
- 计算机视觉技术与应用综述
- 最详细的 tf.cholesky_solve(chol, rhs, name=None)函数和tf.matrix_solve(matrix, rhs, adjoint=None, name=None)
- java 10000以内的质数_10000以内有多少质数
- 国内怎么使用chatGpt
- VBA小程序_对于选中的单元格进行取消合并_选择空值向上填充
热门文章
- bzoj 1005: [HNOI2008]明明的烦恼(prufer数列)
- opencv 创建调色板
- jquery基本过滤选择器:first :last :not(.myclass) :even :odd :eq(1) :gt(5) :lt(1) :header :animated :focus
- Image-to-Image Translation with Conditional Adversarial Networks
- 荣耀10 原版android,荣耀V10新内置壁纸
- linq操作符:分区操作符
- spring-mvc文件上传与下载
- Android数据库框架-ORMLite
- 080 HBase的属性
- alter table锁表,MySQL出现Waiting for table metadata lock的场景浅析及解决方案