git快速入门

1.关于版本控制

        git是目前世界上最先进的分布式版本控制系统,那么什么是版本控制呢?

        假设现在,要写一篇很长很长的word文档,有时候想要删除或更改某一个段落,又怕恢复找不回之前版本,那么此时只能通过再新创建一个word文档以便本分,然后不停的改,不停的备份,改动多了就成了


        一周过去了,自己看着一些乱七八糟的文件,还要想之前做了哪些修改,这些不可怕,可怕的是同事要帮忙填某些数据,就得通过邮箱等形式发给他们,同事又得思考,改动了哪些地方,多麻烦。    此时我们就想要有一款软件,能帮我们记录每次文件的改动,还可以同事协调合作,如果我们需要,就在软件里瞄一眼,就能看到所有改动。就像下面这样,于是乎就有了版本控制,省事。


        版本控制是一种记录一个或多个文件的变化,版本控制系统(缩写VCS),可以理解为一个“数据库”,

它可以用来保存一个完整项目的版本,当需要查看一个之前的版本时,版本控制系统可以显示出当前版本和上一版本的所有改动细节。

关于集中式版本控制和分布式版本控制系统

        在最初的CVS和SVN中,都是集中式版本控制系统,集中式版本控制系统,有一个中央服务器,所有的版本库都是集中存放在中央服务器中的,每个人在自己的电脑上干活,再添加提交到中央服务器上,这个中央服务器就像是一个一个图书馆,每个人借书,再还书,如果今天图书馆关门了,那么所有人都没法再借书,意味着都没法再工作,而且集中式版本控制系统最大的毛病是必须联网才能工作,如果在局域网内还好,如果是在互联网,遇到网速超慢的话,可能提交一个很小的文件就得等很久,这不严重影响工作效率啊,人都得急死。那么就有了git这种最先进的分布式版本管理系统,相比于集中式管理系统,分布式管理系统的容错率更高,因为每个人的电脑里都有完整的版本库,这样也不用担心什么某个人电脑坏了其他人干不了活之类的,但实际在使用分布式管理系统的时候,其实很少在两个人之间的电脑上互推,通常也有一台类似于中央服务器的电脑,但这台服务器的作用仅仅是方便大家的“交换”和修改,没有他大家也一样可以干活。

2.    安装git

Windows上安装git直接从官网上下载就行 安装git ,然后默认安装选项即可,因为git是分布式版本控制系统,所以每个机器安装完成之后都需要自报家门,就得在命令行输入

$ git config --global user.name"Your Name"

$ git config --global user.email"email@example.com"

安装完成后,然后是创建版本库,类似于仓库,简单理解为一个目录,这个目录的所有文件都被git所管理起来,每个文件的修改,删除,git都能跟踪。

创建版本库  mkdir  name

如果是Windows用户,还需要在命令行输入 git init 让这个版本库变成git可以管理的仓库。

添加文件到git仓库

git add  <file>  可以反复多次使用,添加多个文件,最后commit一次提交  git add . 表示提交所有文件

git commit -m <message> 完成提交

git log     查看版本历史,显示最近提交提交历史记录。

3.    关于版本回退

在git中,每一个版本就像是一个RPG游戏存档,每通过一个新的关卡都会有一个存档,又或者在打boss的时候,也需要先存个档,以便没打过死亡要从头再来,在git当中,HEAD表示当前版本,也就是最后提交的版本,而HEAD^表示上一个版本,HEAD^^表示上上一个版本,HEAD~n表示上n个版本。

git reset --hard HEAD^

但是在git中, head是一个指针,它指向当前版本,当我们从当前版本回到上一个版本时,此时head又指向上一个版本,那么我们想回到最新的版本,又改怎么办呢?放心,在git中,有一种药叫后悔药,想吃随时可以吃,我们只需要找到最新版本的commit id 就行了 通过git reflog命令,可以查看记录每次命令,于是乎我们找到最新版本的id又可以通过git reset --hard id 回到最新版本。

4.    git的暂存区

git有一个很重要的概念,就是暂存区,那么什么是暂存区呢?

我们先开工作区(Working directory),所谓的工作区,就是电脑里能看到的目录,而在工作区下面还有个隐藏目录,.git,在这个目录下,有个stage(index)的暂存区,还有git为我们自动创建的第一个分支master,以及指向master的指针Head,在我们修改完文件想要往版本库里添加时,执行git add 操作,此时就是把修改完成的文件放在git的暂存区index里,最后通过commit一次性把所有暂存区的内容提交到当前分支中。git每一次修改,如果不用add添加到暂存区中,那就不会加入到commit中。

5.    关于git的标签

        在git中,发布一个版本的时候,通常会给一个版本打上一个标签(tag),这样就确定了所修改的版本,虽然git有commit,对应每一个commit_id号,可以找到某个版本,但实际上是一串乱七八糟的数字和字符,如果是v1.1

 v1.2这样就很有意义了,tag就是一个更容易让人记住的名字,跟摸个commit绑定在一起。

        创建标签  首先切换到需要打标签的分支上  然后git tag  <name>就可以新创建一个标签。

        查看标签    git  tag   查看所有标签

        标签不是按时间顺序排列的,而是按字母顺序排列的,可以用git  show  <tagname>查看标签信息

        git    tag    -a  <tagname>   -m   "xxxx"    可以指定标签信息备注

        如果标签打错了,也可以删除  。    git   tag    -d    v1.0    删除v1.0标签

        因为标签都只储存到本地,不会推送到远程,所以,打错的标签可以在本地安全删除。

        如果要把某个标签推送到远程,可以用 git push  origin   <tagname> 例如:git push origin  v1.0

        或者,一次推送全部未推送到远程的本地标签。git  push  origin  --tags

        如果标签已经推送到远程仓库,要删除,就得先从本地删除,git  tag  -d  v1.0,然后再从远程删除,

删除命令也是push,git push  origin  :refs/tags/v1.0。

6.    关于分支

        在git中,git把每一次提交的都串成一条时间线,这条时间线就是一个分支,也就是主分支master分支,随着不断的提交,这条时间线会越来越长。

        严格来说,head不是指向提交,而是指向master指向的最新提交,每一次提交,master分支都会向前移动一步,不断提交,master分支也会越来越长。

当我们新创建一个分支,如dev分支,git会新建了一个dev指针,指向和master相同的提交,再把head指向dev,就表示当前分支在dev上,每次修改和提交就是针对dev分支了,这样dev指针不断的移动,head指向当前提交的dev指针,而master指针不变。工作区的内容文件都没有任何变化。

假如我们在dev分支上完成工作了,就可以把dev 合并到master上,合并就是把master指向dev当前的提交,合并完成后就可以删除当前的dev分支了,删除dev分支就是把dev指针给删除掉,删除后,就只剩一条master主分支了。


7.    git的常用命令

        git clone   clone 一个远程库

        git   init    创建一个新的本地库

        git   remote add origin xxx  将本地仓库和远程仓库关联

        git   add .  /  git add <file>添加到暂存区

        git  commit -m <message>  提交到当前分支

         git  status     查看工作目录和暂存区的状态

        git diff      查看文件的更改

        git    branch 查看当前分支

        git    branch    <name>    创建分支

        git    checkout    <name>    切换分支

        git checkout    -b    <name>    创建并切换到当前分支

        git    merge    <name>    合并某分支到当前分支

        git    branch    -d    <name>    删除本地分支

        git    branch    -a    查看远程分支列表  ,    绿色代表当前分支列表,红色是远程分支列表

        git    branch    -m    <oldname> <newname> 重命名本地分支名

        git    log    查看提交日志

        git    reflog    查看命令历史

        git    reset    --hard    commit_id     通过git  log 查看到每个版本的commit_id  ,然后切换回退版本

        git    remote    -v    查看远程库信息

        git    reset    清屏

        git    tag    <name> 创建新标签

        git    tag    查看所有标签状态

        git   tag    -d    v1.0    删除v1.0标签

        git push  origin   <tagname>    推送某个标签到远程

        git  push  origin  --tags    推送全部未推送的标签到远程

        git  tag  -d  v1.0   git push  origin  :refs/tags/v1.0 删除已推送到远程仓库的v1.0标签

        git放弃本地更改 强制拉取远程更新

        git fetch –all 

        git reset –hard origin/master

        将本地分支提交到远程分支

        $ git checkout -b feature-branch 

         //创建并切换到分支feature-branch 

         $ git push origin feature-branch:feature-branch

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

推荐阅读更多精彩内容

  • Git常用语法 [TOC] Git简介 描述 ​ Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,...
    君惜丶阅读 3,570评论 0 13
  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,697评论 9 163
  • 1.git的安装 1.1 在Windows上安装Git msysgit是Windows版的Git,从https:/...
    落魂灬阅读 12,694评论 4 54
  • git常用命令 GIT常用命令备忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章阅读 8,536评论 1 26
  • 上周四在微信朋友圈看到合欢路加油站的一则消息:9月9日浦东新区青少年活动中心实施爆破拆除,本加油站暂停业务……当时...
    谁的梦想在路上阅读 186评论 0 0