git 学习使用总结一(本地操作)
首先安装 Git,Git 官网 会推荐适合自己系统的安装包,网速慢的同学可以去百度网盘下载 Git-2.21.0-64-bit Windows 版本 提取码:tz9d。
通过几天的学习,熟悉了 git 的一些常用命令,要用熟练和操作更复杂的功能还必须继续学习。不过 git 作为工具,它是用来提高我们的工作效率的工具,系统的学习之后可以暂且放放,等到以后实际项目中用到了不会的东西再来问专家或通过搜索引擎查询解决办法。
这篇文章仅供自己以后翻阅加深记忆,要系统的学习 git 教程(中文版),请移步到 liaoxuefeng.com 学习 git 教程部分。
我使用的是 windows 系统,所以使用 Git Bash 输入命令。首先,全部命令,再实例结合命令:
一、命令:
1. 显示当前的目录,pwd (Print Working Directory)
$ pwd
2. 进入指定目录,cd (Change Directory)
$ cd
3. 返回到上一级目录
$ cd ..
4. 配置
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
5. 创建空目录,mkdir
$ mkdir
6. 初始化该目录
$ git init
7. 把文件添加到仓库
$ git add <filename>
一次添加多个文件(添加新文件和编辑过的文件不包括删除的文件)
$ git add .
8. 把文件提交到仓库
$ git commit -m "added one line"
9. 查看状态
$ git status
10. 查看修改内容
$ git diff
如果想要查看两次提交的差异(具体修改了哪些文件):
$ git diff bash1 bash2 --stat
如果想要查看两次提交的差异中,修改的文件中具体修改了哪些内容的话:
把 --stat 换成具体的文件就行了。
$ git diff bash1 bash2 <filename>
这两个命令非常有用,有这样一些场景:
一、如果你改了很多文件,同时 commit 提交了,但是没有网络无法 push 到远程。或许你需要同事帮忙,他们帮你更改这些文件然后 push 到远程。你没有网络不可能直接把文件发给他们,所以就需要知道具体更改了哪些文件,然后知道改动的文件改了哪些内容。让他们添加上,然后commit和push,你自己撤销你所做的更改。
二、如果有两个很相似的系统,需要移植你所做的更改,但是你不可能直接复制替换源文件,因为这样也会引起冲突或者覆盖掉原本不同的地方。这个时候就需要知道更改了哪些内容,然后每一个文件移植过去。
11. 显示提交历史
$ git log
用一行显示提交历史
$ git log --pretty=oneline
12. 版本回退(回退到上一版本)
$ git reset --hard HEAD^
回退到指定版本
$ git reset --hard <commit id>
13. 查看更改历史(包括添加、提交、删除、撤销...)
$ git reflog
14. 查看文件内容
$ cat <filename>
15. 撤销修改(未添加到暂存区)
$ git checkout -- <filename>
16. 撤销修改(已添加到暂存区)
$ git reset HEAD <filename>
$ git checkout -- <filename>
17. 撤销修改(已提交到版本库)
$ git reset --hard HEAD^
$ git reset HEAD <filename>
$ git checkout -- <filename>
18. 删除文件(删除工作区的文件)
$ rm test.txt
彻底删除文件,同时删除版本库里的文件
$ rm <filename>
$ git rm <filename>
$ git commit -m "deleted a file"
二、实例结合命令
1. 显示当前的目录,pwd (Print Working Directory)
$ pwd
当前目录是 /c/User/Administrator,也就是说,我的 Git Bash 应用安装在这个目录下?
2. 进入指定目录,cd (Change Directory)
$ cd
这个 bootstrap 是我从 https://github.com/twbs/bootstrap (bootstrap 在 github 上的主页) "Fork" 到自己的账号下后克隆到本地的。我选择的是 “v4-dev” 这个分支,所以后面会有 /bootstrap (v4-dev) 这样的字符出现。
3. 返回到上一级目录
$ cd ..
输入 "cd .." 然后回车,当前目录从 "/c/Users/Administrator/bootstrap/dist" 变成了 "/c/Users/Administrator/bootstrap"。"cd" 与 ".." 之间有一个空格。
4. 配置
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
配置的目的,表示我的这台电脑使用的是 "xinjie-just" 这个账号。
5. 创建空目录,mkdir
$ mkdir
执行该命令后,在我的根目录下就新增了一个文件夹 running:
6. 初始化该目录,将该目录变成 git 可以管理的仓库:
$ cd running
$ git init
Initialized empty Git repository in C:/Users/Administrator/running/.git/
首先进入该仓库,然后将其初始化,init(initialization)。
7. 把文件添加到仓库
$ git add <filename>
我在本地添加了一个新文件 readme.txt,然后添加了一段话。
$ git add .
一次添加多个文件(添加新文件和编辑过的文件不包括删除的文件) :
8. 把文件提交到仓库
$ git commit -m "added one line"
"-m" 后面的 "added one line" 为注释,解释这次提交的意图,可任意填写容易理解的话。
添加文件到Git仓库,分两步:
第一步,使用命令 git add <filename>
,注意,可反复多次使用,添加多个文件;
第二步,使用命令 git commit
,完成。
9. 查看状态
$ git status
结果告诉我们,在 master 分支上,没有东西需要提交,工作目录是干净的。
10. 查看修改内容
$ git diff
在上次我提交文件后,在最后添加了空行和一段话。diff 是 difference(改变) 的缩写。
11. 显示提交历史
$ git log
$ git log --pretty=oneline
使用 git log 可显示更改历史,包括了版本号、作者、日期、提交注释。使用 git log --pretty=oneline 会用一行显示一条历史记录,看起来更清晰明了。
12. 版本回退
$ git reset --hard HEAD^
HEAD 表示当前版本号,HEAD^ 表示上一个版本号,HEAD^^表示上两个版本号,与 HEAD~2 意思相同。
这里回到上一版本。
回退到指定版本,还有更快捷的方法。
$ git reset --hard <commit id>
这里使用版本号回到上一版本。
13. 查看文件内容
$ cat <filename>
如上(12点) cat readme.txt 查看文件内容。
14. 查看更改历史
$ git reflog
查看更改历史,不仅仅是提交历史。包括了添加版本、版本回退、撤销修改等等。
15. 撤销修改(未添加到暂存区)
$ git checkout -- <filename>
我在 readme.txt 中添加了一行,然后使用 cat readme.txt 显示其内容,随后使用 git checkout -- readme.txt 将其撤销,再使用 cat readme.txt 显示内容。
使用这种命令有一个前提,是还没有使用 git add 将文件添加到暂存区。
16. 撤销修改(已添加到暂存区)
$ git reset HEAD <filename>
我在 readme.txt 文件中添加了配速这一行。然后验证 git reset HEAD readme.txt 这个命令:
1. 使用 git add readme.txt 命令将文件提交到暂存区;
2. 使用 git reset HEAD readme.txt 命令撤销暂存区里的新内容;
3. 使用 git checkout -- readme.txt 命令将工作区里的内容和暂存区里的内容保持一致(即撤销工作区最近的一次修改)。
17. 撤销修改(已经提交到仓库)
如果已经将修改提交到仓库了,而要撤销这次修改,需要分三步完成:
第一步:返回到上一版本库,使用命令 git reset --hard HEAD^ ;
第二步:撤销暂存区里的修改,使用命令 git reset HEAD readme.txt ;
第三步:撤销工作区里的修改,使用命令 git checkout -- readme.txt 。
$ git add readme.txt $ git commit -m "added Foot Strike"
[master a7ab6d5] added Foot Strike
file changed, insertions(+), deletion(-) $ git status
On branch master
nothing to commit, working directory clean $ git reset --hard HEAD^
HEAD is now at 9110ce6 added Warm Up $ git reset HEAD readme.txt $ git checkout -- readme.txt $ git status
On branch master
nothing to commit, working directory clean
18. 删除文件,rm (remove)
rm 准确一点儿的理解是移除,暂时看不见了,实际上还存在。可以选择直接在文件管理器中将其删除,但是那样的删除是将文件放到了回收站,等待你下一步操作(还原或彻底删除)。但是这里选择用 git 命令删除。
$ git rm test.txt
新建了一个用来操作 git 删除命令的测试文件 test.txt 。然后使用 git rm test.txt 将其删除。
从上图中可以看出,我主要操作了四步:
第一步:根据 git status 提示,我有一个文件需要添加进暂存区,于是我添加然后提交到了版本库里;
第二步:使用 rm test.txt 删除了工作区里的 test.txt 文件;
第三步:根据 git status 提示,我进行了一项删除操作 "deleted: test.txt",需要进一步选择操作命令,使用 git add/rm test.txt 命令去更新将要被提交的操作,或者使用 git checkout -- test.txt 去忽略工作区里的改变(第二步中的删除)。于是我选择了 git rm test.txt 彻底删除了工作区的 test.txt 文件(就好像在文件管理器里删除文件后,需要去回收站里彻底删除或还原文件一样,只是用 git 命令删除的文件放在了 git 仓库为我们准备的一个回收站里,我们看不见)。
第四步:使用 git commit -m "deleted test.txt" 将删除操作提交到仓库。
扩展:
有一种情况是删错了。所以需要恢复,或者说撤销删除。
我在 test.txt 文件同一路径下新建了 test-rm-checkout.txt 文件,用来测试撤销删除操作。
从上图中可以看出,在使用 rm test-rm-checkout.txt 命令删除文件后,我试图使用 cat test-rm-checkout.txt 命令进入被删除的文件看内容,被提示"没有这样的文件"。当我使用 git checkout -- test-rm-checkout.txt 撤销删除后,再次使用 cat test-rm-checkout.txt 命令进入被删除的文件看内容时,可以查看了,证明文件又回来了(只是里面没有内容,显示为空白而已)。
git 学习使用总结一(本地操作)的更多相关文章
- Git 学习(三)本地仓库操作——git add & commit
Git 学习(三)本地仓库操作——git add & commit Git 和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念.这在上文已有提及,本文具体说明什么是工作区及暂存区,以及 ...
- Git学习-安装与创建本地仓库
前言 以前公司进行项目的版本管理都是用svn,最近公司推荐用git,把svn给关闭了.没办法,拿来主义.网上一番猛操作,勉强也能用了,给自己做个笔记. git安装 因为我用的是windos系统,在Wi ...
- git学习记录1(本地库管理)
学习参考地址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 本编随笔只是自己对 ...
- Git学习(1)-本地版本库的创建
我用的是Git-2.14.3-64-bit版本,在windows64位上运行的,把软件分享下链接:http://pan.baidu.com/s/1jIoZ7Xc 密码:13q2. 安装及配置自行百度, ...
- Git 学习(四)操作修改和版本穿梭
Git 学习(四)操作修改和版本穿梭 之前的章节,已介绍了本地Git库创建.暂存区增.删.改,以及提交版本库:可回顾下命令操作: git add 和 git commit. 光有之前章节的操作,Git ...
- Git学习笔记---协作的一般流程
一般的操作流程 1.pull 王小坤与另一个同事张大炮一起开发一个项目,张大炮昨天修改了数据库读写的api,优化了执行速度,并把read()函数改名成了Read(),下午下班之前把这些代码push到服 ...
- Git学习(一)——熟悉git操作流程
本篇笔记前面都是仔细介绍使用方法,如果想跳过这些直接熟悉怎么使用,跳到最后一个知识点完整流程介绍. git 了解:特点.优点 1.git用户版和服务版整合在一起,任何机器上都安装了两个版本 2.git ...
- Git本地操作2
code[class*="language-"], pre[class*="language-"] { color: rgba(51, 51, 51, 1); ...
- git 学习使用总结二(远程仓库操作)
这篇文章仅供自己以后翻阅加深记忆,要系统的学习 git 教程(中文版),请移步到 liaoxuefeng.com 学习 git 教程部分. 我使用的是 windows 系统,所以使用 Git Bash ...
随机推荐
- 性能更好的js动画实现方式——requestAnimationFrame
用js来实现动画,我们一般是借助setTimeout或setInterval这两个函数,css3动画出来后,我们又可以使用css3来实现动画了,而且性能和流畅度也得到了很大的提升.但是css3动画还是 ...
- 原生JS:Object对象详细参考
Object对象详细参考 本文参考MDN做的详细整理,方便大家参考MDN JavaScript原生提供一个Object对象(注意起首的O是大写),所有其他对象都继承自这个对象. 构造函数: Objec ...
- 一个类似backbone路由的纯净route ( 前端路由 客户端路由 backbone路由 )
大家用backbone.angular,可能都习惯了内置的路由,这两个框架的路由都是非常优秀的,强大而简单. 客户端(浏览器)路由原理其实比较简单,其实就是监听hash的变化. 在之前的架构探讨中,说 ...
- ArcCatalog中连接SDE数据库
描述 在ArcCatalog采用直接的方式连接SDE数据库时,无论怎样填写连接参数,都连接不上(数据库管理工具和代码都可以连).主要报两类错误: Error:ORA-12154:TNS:无法解析指定的 ...
- Problem with WinRM on Exchange 2013 Management Shell and Exchange Toolbox on a new exchange 2013 with CAFE and BE on single server installation
While deploying MS Exchange 2013 I experienced issues with accessing the Exchange Management Shell a ...
- 什么时候用Application的Context,什么时候用Activity的Context
单例模式用application的context 如果我们在Activity A中或者其他地方使用Foo.getInstance()时,我们总是会顺手写一个『this』或者『mContext』(这个变 ...
- Android Studio 更换国内源下载依赖库
我的博客:http://daycoding.com 小小程序猿 由于国内GFW的原因,经常导致android studio 莫名其妙的编译不了,多数原因是由于不能下载依赖库 Gradle支持三种不同的 ...
- 定制Android透明按钮
自己在学习和做例子的过程中,常常会需要按钮,由于系统自带按钮样式不太好看,所以需要我们自己来定制项目得按钮,我常常采用2中方法: 1.是制作9-patch的图片,这样能够匹配文字内容的长短. 2.是指 ...
- Android 手机卫士--xutils说明与下载方法使用
xUtils简介 xUtils 包含了很多实用的android工具. xUtils 最初源于Afinal框架,进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持(10种谓词) ...
- TextView 字数限制
给大家推荐一个 无bug的 字数限制 http://blog.csdn.net/u012460084/article/details/50377928