Git学习笔记(1)

2017-12-28  本文已影响0人  豆芽太羊

一、简介

1.Git是Linus开发的一种分布式版本控制系统,与分布式概念相对应的是集中式,后者需要一台中央服务器,且必须联网才能工作。
2.在本地创建nameemail,注:设置为ZhouXR和8437*****@qq.com


二、本地仓库

1.创建版本库(repository),可理解为目录。

Step 1:新建一个目录(如learn_git),放到合适的位置
Step 2cd到该目录,用 git init 命令将其初始化,则空的Git仓库建好。
Step 3:编写一个文本文件(如test.txt)(需要注意word格式为二进制,不能利用版本控制系统来跟踪,图片视频等也无法跟踪其详细变化,只能知道大小变化,故这里采用sublime来编辑)。
Step 4:将文件放到lean_git目录下,并用命令git add test.txt来将其添加到Git仓库,(注:可以多次add不同的文件,最后一次性commit到仓库)
Step 5:用命令git commit -m “这里写本次提交的说明” 告诉Git,将文件提交到仓库

2.修改及查看

1)命令git status:可通过它来随时掌握仓库当前的状态,会提示是否修改,是否已提交等信息。
2)命令git diff test.txt:如果上述命令运行后提示文件被修改过,可用此命令查看对文件进行的修改详情,例如词句的增删等。
提交修改和提交新文件的流程一样,先add到仓库,再commit到仓库。

3.版本回退

1)命令git log [--pretty=oneline] [filename]:显示[某一文件]从最近到最远的提交日志,如果嫌输出信息过于繁复。可以加上后面的参数,只查看版本号和更改说明。

表1 命令git log的常用参数

选项 解释说明
-p 按补丁格式显示每个更新之间的差异。
--stat 显示每次更新的文件修改统计信息。
--shortstat 只显示 --stat 中最后的行数修改添加移除统计。
--name-only 仅在提交信息后显示已修改的文件清单。
--name-status 显示新增、修改、删除的文件清单。
--abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。
--relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)。
--graph 显示 ASCII 图形表示的分支合并历史。
--pretty 使用其他格式显示历史提交信息。可用的选项包括 onelineshortfullfullerformat(后跟指定格式,常用格式如表2所示)。

表2 git log –pretty=format的常用格式

选项 说明
%H 提交对象(commit)的完整哈希字串
%h 提交对象的简短哈希字串
%T 树对象(tree)的完整哈希字串
%t 树对象的简短哈希字串
%P 父对象(parent)的完整哈希字串
%p 父对象的简短哈希字串
%an 作者(author)的名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用 --date= 选项定制格式)
%ar 作者修订日期,按多久以前的方式显示
%cn 提交者(committer)的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期,按多久以前的方式显示
%s 提交说明

2)在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个为HEAD^^,为方便表示,上n个版本可以记为HEAD~n
命令git reset --hard HEAD^:表示回退到上一个版本,hard参数表示彻底将工作区、暂存区和版本库恢复到指定的版本。注:--soft参数表示仅撤销已提交的版本库内容,不会修改暂存区和工作区;--mixed参数表示撤销已提交的版本库内容和暂存区内容,不会修改工作区内容。
命令git reset --hard 3625143 [filename]:表示[将某文件]回退到commit id3625143的版本,不能带路径进行硬性/软性重置(--mixed带路径重置已弃用),若带上文件名,则需改参数为--
3)命令 git reflog:记录每一次命令,可查看命令历史,即使退回旧版本后想再找回新版本也是可行的,只要找到commit id即可。

4.工作区和暂存区

1)工作区(working directory):指电脑中能看到的目录,比如上面的learn_git文件夹。
2)版本库(repository):指工作区中的隐藏目录.git,表示Git的版本库。版本库中存放了很多东西,其中最重要的是暂存区(stageindex)和Git自动创建的第一个分支master,以及指向master的一个指针HEAD。前面所说的向版本库中添加文件的操作,add实际上是将文件修改添加到暂存区,而commit就是将暂存区中的所有内容提交到当前分支。

区分
命令git diff test.txt:是工作区(work dict)和暂存区(stage)之间的比较,工作区进行了修改但还未add到仓库,此时使用会提示修改了哪些内容.
命令git diff --cached test.txt:是暂存区(stage)和分支(master)之间的比较,add之后commit之前使用会提示修改了哪些内容.
命令git diff HEAD -- test.txt:工作区和分支之间的比较,此命令可用于查看工作区和版本库中最新版本的区别。

5.管理修改

1)每次修改,如果不add到暂存区,那就不会加入到commit中。
2)命令git checkout -- test.txt:以暂存区为蓝本,覆盖掉工作区,用来丢弃本地修改。
3)命令git reset HEAD test.txt:清空暂存区的提交,暂存区变为和仓库中相同的版本。

checkout的默认值为暂存区,和reset的默认值为HEAD。因此reset一般用于重置暂存区(除非使用--hard参数,否则不会重置工作区);而checkout命令主要是覆盖工作区。

6.删除文件

1)命令git rm test.txt:将文件删除(暂存区和工作区的文件都会被删除)并用commit命令提交,则版本库中的文件被删除。
2)若在工作区将某文件误删,则可用命令git checkout -- test.txt将文件从暂存区中取出来,覆盖到工作区,即恢复到了版本库中的最新版本。
3)命令 git clean -f可用来删除位于本地库中,但未被Git跟踪的文件,可以在删除之前使用git clean -n来获得删除信息,以确定是否删除该文件。

上一篇 下一篇

猜你喜欢

热点阅读