# 重置版本: 穿越到第一次的版本号,`08cbe61c2a635ec6f70ae7a50842ae308cd95fee` 即 `git log` 告诉我们的版本号. $ git reset --hard 08cbe61c2a635ec6f70ae7a50842ae308cd95fee HEAD is now at 08cbe61 add git learn note
发生什么了,我是谁,我在哪?现在是2019年还是公元220年?
小助手你在哪,快帮我看看现在是什么状态。
# 查看文件状态: 报告老板,工作区很干净,没有发生文件更改哟! $ git status On branch master nothing to commit, working tree clean
小助手也没有给我满意的回复,自己动手丰衣足食,我还是自己看看周围有什么人吧!
Administrator@snowdreams1006 MINGW64 /f/workspace/git-bash-demo/git (master) # 查看当前目录下文件: 原来我还在 `git` 目录下,这里还有我的学习笔记 `git.md` 呢! $ ls git.md Administrator@snowdreams1006 MINGW64 /f/workspace/git-bash-demo/git (master) # 查看文件内容: 我的笔记内容不是最新的了,原来的"git is so easy"不见了,我竟然真的回到了过去! $ cat git.md git 的基本流程 1. `git init` 初始化项目,创建本地网盘. 2. `git add` 添加文件,挑选出待上传到网盘的文件,准备上传. 3. `git commit` 提交文件,将已目标文件上传到网盘进行备份. 4. `git status` 查看文件状态,本地网盘创建完毕后随时随地呼唤小秘书查看文件状态. 5. `git log` 查看提交历史,同一个文件运行多次上传,每一次的文件都能识别,总览上传记录. 6. `git reflog` 查看回流历史,存储重要操作命令结果,高级进阶必备知识点.
抱着四处逛逛的心态,看一下当初的风景,逛累了回去吧!
怎么来的就怎么回去,原路返回一直是最保险的,自信心爆棚的说:要先查看一下版本号,然后运行git reset --hard <commit>
穿越回未来!
# 查看提交历史: 心态崩了,放声大哭:现在的我看不到未来的版本号,那我如何穿越啊... $ git log commit 08cbe61c2a635ec6f70ae7a50842ae308cd95fee (HEAD -> master) Author: snowdreams1006 <snowdreams1006@163.com> Date: Tue Apr 30 11:16:19 2019 +0800 add git learn note
真的是叫天天不应叫地地不灵,本来是想回到过去旅游观光的,现在手头上没有了未来的坐标如何穿越回去啊?
哭了三天三夜,调整好心态,求人不如求己,努力回想下平生所学看看有什么别的方法能穿越回未来?
记得当初介绍 git log
命令时还介绍一个相似的命令,当时说高级进阶必备,现在不知道能不能用着。
叫什么名字,好像是”回流”,于是经过千百次的尝试终于记起来命令,原来是 git reflog
,出发吧,皮卡丘!
# 翻阅命令: 目前所处的版本号是 `08cbe61`,上一个版本号是 `0b0657b`,然后回到了 `08cbe61` . $ git reflog 08cbe61 (HEAD -> master) HEAD@{0}: reset: moving to 08cbe61c2a635ec6f70ae7a50842ae308cd95fee 0b0657b HEAD@{1}: commit: git is so easy 08cbe61 (HEAD -> master) HEAD@{2}: commit (initial): add git learn note
看来学习不能只追求够用啊,需要救命时还是要靠附加技能啊。
# 重置版本: 穿越回未来,看到 "git is so easy" 放心多了,我应该回来了吧? $ git reset --hard 0b0657b HEAD is now at 0b0657b git is so easy # 查看文件内容: 我张汉三又回来了! $ cat git.md git 的基本流程 1. `git init` 初始化项目,创建本地网盘. 2. `git add` 添加文件,挑选出待上传到网盘的文件,准备上传. 3. `git commit` 提交文件,将已目标文件上传到网盘进行备份. 4. `git status` 查看文件状态,本地网盘创建完毕后随时随地呼唤小秘书查看文件状态. 5. `git log` 查看提交历史,同一个文件运行多次上传,每一次的文件都能识别,总览上传记录. 6. `git reflog` 查看回流历史,存储重要操作命令结果,高级进阶必备知识点. git is so easy
经过这次穿越之旅,再也不敢轻视任何一个知识点了,以后保不齐都是救命的附加技能啊,赶紧把这条感悟追加到 git.md
学习笔记中去!
# `git reflog` 可以大概理解为 `reference log` 记做日志的参考日志,这样下次就不要绞尽脑汁回忆 `reflog` "回流"了! $ echo "git reflog help us to back to fulture" >> git.md
亲爱的小伙伴们,git
的学习之旅暂时告一段落,有没有掌握 git
命令行的基本操作呢?
登录到远程服务器: 远程登录
ssh DESTINATION
:secure shell
的缩写,即安全的shell
终端.
正常情况下 windows
系统自带 cmd
终端是不支持 ssh
方式登录 linux
服务器的,如果想要远程登录 linux
服务器一般需要安装第三方工具,但 git bash
命令行却支持ssh
。
# 登录 github: 正常输入用户名密码或者秘钥等可以登录到远程 `linux` 服务器. $ ssh git@github.com PTY allocation request failed on channel 0 Hi snowdreams1006! You've successfully authenticated, but GitHub does not provide shell access. Connection to github.com closed.
访问互联网资源: 网络请求
curl URL
:CommandLine Uniform Resource Locator
的缩写,即命令行下载工具.
互联网的资源一般都有专属链接,通过浏览器我们可以访问网页,但是在命令行下没有浏览器又想访问互联网资源该怎么办?
curl
就是这么一种工具,在命令行下也可以访问互联网资源,由于默认是将互联网资源下载到本地,因此又被成为命令行下载工具。
# 将百度首页下载到 `baidu.html` 文件,配合管道符 `>` 实现文件内容的重定向 $ curl http://baidu.com > baidu.html
查看已运行命令: 历史
history
: 翻译为”历史”,即查看历史命令
$ history
常用命令
git bash
命令行终端内置命令比 windows
默认的 cmd
命令行窗口强大多了,除了支持一般的命令外,还支持简单的 linux
命令。
如果仅仅操作文本,git bash
足以满足日常文增删该查需求,如果追求类 linux
命令行体验,推荐下载babun。
Babun - a windows shell you will love !
- 常用内置命令
# 打印当前登陆用户 $ whoami # 打印当前目录路径,其中 `/` 表示根目录,`~` 表示家目录. $ pwd # 查看当前目录下所有文件(夹) $ ls # 切换指定目录,其中 `cd` 不带任何参数直接切换到家目录,`../` 表示上一级目录 $ cd 切换目录 # 新建指定目录 $ mkdir DIRECTORY # 新建指定文件 $ touch FILE # 编辑指定文件 $ vim FILE # 查看指定文件 $ cat FILE # 查看指定文件开头部分,默认前十行. $ head FILE # 查看指定文件结尾部分,默认后十行. $ tail FILE # 查看操作历史 $ history # 复制文件 $ cp SOURCE DEST # 移动文件 $ mv SOURCE DEST # 删除文件 $ rm FILE # 删除文件夹 $ rmdir DIRECTORY # 特殊字符: `tab` 自动补全命令,`esc` 退出编辑模式,`>` 覆盖重定向,`>>` 追加重定向. # 远程登录服务器 $ ssh DESTINATION # 发起网络请求 $ curl URL
git
基本命令
# 初始化本地项目 $ git init # 添加文件到缓存区 $ git add FILE # 提交文件到版本库 $ git commit # 查看文件状态 $ git status # 查看提交日志 $ git log # 查看操作历史 $ git reflog
小结
我们以现实世界和计算机世界对比分析,在命令行终端工具下通过命令试图介绍计算机哲学,顺便学习了常用的命令。
比如简单的文件增删改查,相信你现在无鼠标操作也能创建文件,删除文件以及复制修改文件了吧?
基本的命令除了解决日常所需外,还在于和其他工具的配合,比如我们使用的命令行终端是 git bash
,这是安装 git
服务时安装的辅助性工具,帮助我们在命令行下进行版本控制。
只有熟悉基本的命令后才能更好的理解 git
的工作流程,图形化工具或插件也有很多,每一种都有自己的操作风格,相信熟悉了命令后再去学习图形化工具操作也不会太费事。
希望本文对你理解计算机或者说学习 git
能够带来些许帮助,如有不当描述,欢迎指出补充。