Git学习笔记
2019-03-18 本文已影响0人
Vagabond_0910
Git
说明
- 分布式版本控制系统
- 只能跟踪文本文件的改动
- 使用标准的UTF-8编码
- Notepad++,默认编码设置为UTF-8 without BOM
Git安装
-Git安装成功后,还需要设置,在命令行输入:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
创建版本库(仓库)
-
mkdir
路径及名称
$ mkdir D:/Mygit
$ cd D:/Mygit
$ pwd
pwd
命令用于显示当前目录。
Windows系统下,确保目录名(包括父目录)不包含中文。
- 通过
git init
命令将目录变成Git可以管理的仓库:
$ git init
- 把文件添加到版本库
编写一个readme.txt
的文件,内容如下:
Git is a version control system
Git is free software
编写方式
$ vi readme.txt
退出vi编写:esc + :+ wq
- 第一步:用
git add
将文件添加到仓库
$ git add readme.txt
- 第二步:用
git commit
将文件提交到仓库
$ git commit -m "wrote a readme file"
-m
后面输入的是本次提交的说明
commit
可以一次提交多个文件,所以可以多次add不同的文件
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files"
修改添加的文件
完成添加和提交readme.txt
文件,修改操作如下:
$ vi readme.txt
# 修改内容
Git is a distributed version control system.
Git is free software.
运行git status
查看结果

上述提示信息为
readme.txt
文件已经被修改,但是还未提交更改运行
git diff
查看被修改的内容
确定修改结果后,按照相同步骤提交
$ git status
# 运行git status再次查看当前仓库的状态
git status

将要提交被修改的readme.txt文件
# 提交
git commit -m "add distributed"

修改结束
版本回退
再次修改readme.txt
文件并提交修改
- 修改内容如下
Git is a distributed version control system.
Git is free software distributed under the GPL.
commit
的作用就是将文件修改到一定程度以后保存修改的文件,并且不会改变以前的版本,一旦文件改乱或者误删了某个文件,可以从最近的commit恢复,然后继续修改
- 用
git log
命令查看历史记录
git log
git log
命令显示从最近到最远的提交日志 - 用
git log --pretty=oneline
使提示信息的输出更为简洁明了
-
开始回退到指定版本
Git中,用HEAD
表示当前版本(最新提交的文件),上一个版本HEAD^
,第50个版本HEAD~50
- 用
git reset
回溯到指定版本
$ git reset --hard HEAD^^
HEAD is now at wrote a readme file
用cat readme.txt
查看当前版本内容

- 指定回到未来的某个版本
git reset --hard 版本号
-
用
git reflog
查看所操作的每一次命令
-
HEAD
指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用git reset --hard commit_id
- 用
git log
可以查看提交历史,以确定要回退到哪个版本 - 要重返新的版本(未来),用
git reflog
查看命令历史,以便要确定回到(未来)哪个版本
工作区和暂存区
- Mygit就是工作区
-工作区隐藏的目录.git
叫做Git的版本库,版本库里最重要的部分是stage(或者index),叫做暂存区,还包括第一个分支master
,以及指向master
的一个指针HEAD
。
需要提交的文件修改一律放到暂存区,然后,可以一次性提交暂存区的所有修改
再次修改readme.txt
文档:
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
然后新增加License.txt
文件,用git status
查看当前状态

readme.txt
被修改了;License.txt
从未被修改,状态为Untracked
。将两个文件夹都
add
,查看状态
此刻暂存区如下图所示:

执行
git commit
一次性将暂存区的文件提交到分支master

提交结束,工作区clear

管理进行的修改
再次修改readme.txt
文件
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes.

继续修改
readme.txt
,然后提交
查看状态

此时,第二次修改未被提交,原因是第二次提交并未执行
git add
,也就是说,第二次修改的文件依旧存储在工作区,并未add
到暂存区(stage)用
git diff HEAD -- readme.txt
查看工作区版本和版本库中的最新版本的区别:
继续执行
git add
,把第二次修改提交,随后git commit -m

撤销修改
-
文件修改出错
- 只是在工作区进行修改,并未执行
git add
和git commit -m " "
命令
- 可以执行
git checkout -- readme.txt
丢弃工作区的修改
- 工作区修改出错,并且已经
git add
到暂存区
但是并未执行git commit
- 用命令
git reset HEAD readme.txt
可以把暂存区的修改撤销掉(unstage),重新放回到工作区:
-
丢弃工作区修改
删除文件
-
添加新文件
- 执行
rm
命令直接在文件管理器中删除test.txt
文件
rm test.txt
此时执行的操作有两种:
- 确定要删除版本库中的文件,执行命令
git rm
,然后git commit
此时版本库中的文件已被删除 - 文件误删(版本库中存有),将误删的文件恢复到最新版本,执行
git checkout -- test.txt
.......未完待续