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 ...
随机推荐
- css笔记图
1.css3选择器 2.css3动画 3.flex 4.自适应 5.边距图
- 数据持久化之NSKeyedArchiver
基本的数据类型如NSString.NSDictionary.NSArray.NSData.NSNumber等可以用属性列表的方法持久化到.plist 文件中,但如果是一些自定义的类的话,属性列表的方法 ...
- c语言模拟实现oc引用计数
#include<stdio.h> #include<stdlib.h> //在c中引入 引用计数机制 // 要解决的问题: 1,指向某块动态内存的指针有几个? // ...
- 深入.net(集合)
集合技术: 用于“批量数据”管理的重要技术,是数组技术的替代技术! 与数组技术的对比: 数组:只提供“存储的空间”,但缺乏各种数据管理措施! 集合:在数组的基础上,提供丰富的“属性”和“方法”,来方便 ...
- ios 图片的两种加载方式
控件加载图片,plist,懒加载,序列帧动画,添加动画效果. IOS中有2种加载图片的方式. 方式一:有缓存(图片所占用的内存会一直停留在程序中) + (UIImage *)imageNamed:(N ...
- 关于PHP的curl开启问题
今天在做一个新浪登录功能,新浪提供的PHP SDK里需要用到curl_init()函数,在调试的时候报找不到curl_init()的方法. 经搜索得知需要开启curl的php扩展,那curl又是什么呢 ...
- 项目管理之道--纪我的新书《PMP项目管理认证学习指南(第4版)》出版并预祝大卖!
新年伊始,我最新的项目管理书籍——<PMP项目管理认证学习指南(第4版)>也出版了,真是新年新气象啊!翻译英文书籍是一件任重道远的工作,除了要具备扎实的基本功,熟悉相关的领域外,还需要细致 ...
- 别再TM跟我说找不到满意的工作!
上一篇老徐跟大家分享:如何判断自己在这家公司是否有成长? 今天只想跟大家说几个真是案例:别再TM总抱怨说找不到满意的工作 说明:如下案例,针对老徐当前的软件测试职业,其他职业可自己脑补--- / 1 ...
- Linux 虚拟机网络适配器从E1000改为VMXNET3
我们知道VMware的网络适配器类型有多种,例如E1000.VMXNET.VMXNET 2 (Enhanced).VMXNET3等,就性能而言,一般VMXNET3要优于E1000,下面介绍如果将Lin ...
- mysql源码解读之事务提交过程(二)
上一篇文章我介绍了在关闭binlog的情况下,事务提交的大概流程.之所以关闭binlog,是因为开启binlog后事务提交流程会变成两阶段提交,这里的两阶段提交并不涉及分布式事务,当然mysql把它称 ...