【Git】学习笔记之基本操作
什么是Git?
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。通俗的讲,就是能够保存你的历史操作记录并在必要的时候帮你恢复到指定的操作。
我想很多人在不知道Git之前,会为了防止修改错文件,然后复制粘贴很多个版本,到最后一个文件夹里有很多相似的文件,把自己都弄晕了。
Git还能进行多人合作,将一个项目分出多个分支,每个人只在自己的分支上完成自己的工作,到最后再整合到一个总分支上,这样既能防止错误的发现还提高了效率。
Git的工作流程
Git操作/Git命令
配置信息 :git config
使用者可选择在一开始就指定该机器上所有Git仓库都使用同一个用户名和邮箱地址,也可在每次提交文件时设置用户名和邮箱地址
要注意,是两条横线-
创建版本库(仓库):git init
要使用Git就一定要有一个Git仓库,可以是自己创建的也可以是克隆别人的。
git init命令用于创建一个Git仓库,可以使用已存在的目录作为Git仓库也可以新建一个目录作为Git仓库。
创建成功后会提示Initialized empty Git repository in 目录/.git/,在该目录下可以查看多了一个隐藏文件夹.git:
要在设置处打开显示隐藏文件,才可以看到
.git是Git用于跟踪管理仓库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
在继续其他命令前先了解什么是Git的工作区、暂存区和版本库?
工作区:Git仓库所在目录,除‘.git’外。
暂存区:一般存放在‘.git’下的index文件中,所以暂存区有时也叫作索引。
版本库:’.git’目录。
如何执行Git仓库内文件的提交?
版本库内最重要的就是暂存区和master分支;
在创建Git仓库时,Git会自动为我们创建唯一一个master分支。
提交文件需要两步:
①将修改后的文件添加到暂存区
②将暂存区的所有内容提交到当前分支上(在无创建分支前只有master分支)
在master分支里有一个指针HEAD指向master,而master则指向最新的提交,所以在版本回退时就会认为是通过HEAD进行版本回退,且每次回退是回退了提交到分支的内容 而不是暂存区内的内容。
添加文件到暂存区:git add
添加成功后,不会显示任何信息。
将暂存区内容提交至分支:git commit
在提交时,需要用-m进行注释说明此次提交的内容,方便之后使用者在历史记录中找到该记录,
如果提交时没有设置-m即直接输入git commit
,则Git会尝试为你打开一个vim编辑器填写提交注释信息
输入‘i’后提示以下信息即可输入要添加的注释信息:
完成后按ESC,输入‘:wq’+回车,则退出该界面
退出界面后会提示刚刚添加的信息:
使用者可选择在将全部内容添加到暂存区后再一次性添加到分支上;
使用者可选择输入git commit -am 注释
跳过添加到暂存区这一步直接添加到分支上,但编者还是建议使用两步法。
查看自上次提交后Git仓库是否有更改:git status
若提交后无改动则提示:
意为‘当前没有需要提交的修改’;
若有改动则会提示改动文件:
意为‘readme.txt文件已被修改,但还没有提交 ’;
如果不想看到那么多提示内容的话,可以在命令后加-s查看简洁版:
M即是modified的缩写,表示有修改
查看修改的具体内容:git diff
git status
显示上次提交后的更改,而 git diff
能一行一行地显示这些改动具体是什么。
查看尚未提交到缓存区的改动:git diff
查看提交到缓存区的改动:git diff - -cached
当文件未提交到缓存区时是什么也看不到的,提交后才能看到了
从截图可以看到,原先文件的内容是First Demo,修改后的文件为了First Demo Change;红色为修改前,绿色为修改后 ,其他的先不用理会。
查看已缓存的与未缓存的所有改动:git diff HEAD
查看指定文件的修改:git diff HEAD - -readme.txt
查看提交历史记录:git log
显示顺序是按照提交的时间由近到远显示的
若想查看简洁版的历史记录,可使用git log --oneline
两张图中黄色字均为某次提交操作的commit id(版本号),前张图为版本号的全部内容,后者为版本号的前几位;在版本回退时会需要版本号,只需要输入版本号的前几位系统就会识别了。
版本号后面的内容为提交时填写的注释说明。
查找指定用户的提交日志:git log - -author={author}
该学习笔记是看完廖雪峰老师的Git教程和莱鸟教程后个人总结所得。
参考资料:
1.Git教程 - 廖雪峰的官方网站:http://www.liaoxuefeng.com
2.莱鸟教程:http://www.runoob.com/git/git-tutorial.html