Git学习笔记(1)

一、简介

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来获得删除信息,以确定是否删除该文件。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容

  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,649评论 9 163
  • 简单的记录一下如何上传代码到Github上 上传本地代码到GitHub 第一步:建立git仓库 进入到一个目录里 ...
    weizujie阅读 582评论 0 1
  • 凌乱地堆着的 是我对你的记忆 我总喜欢 用每天的这段时间 来想你 每次另一个人 都会突然闯入 我们的世界 我还要说...
    昨夜的街灯阅读 106评论 1 0
  • 钱老先生在围城中的一句话,给了世人太多的启示,故事中说尽了恋爱时的孤寂,婚姻中的心酸。或许是人们常常会给自己没有得...
    路中间的姑娘阅读 4,812评论 0 2
  • 你和我都有一个 属于自己的作业本 在你作业本的扉页上 依偎着歪歪斜斜的名字 字体虽然不算工整 但是总能想象 你写字...
    悄然Edward阅读 211评论 1 3