美文网首页
git快速入门

git快速入门

作者: eveseven | 来源:发表于2018-11-30 09:39 被阅读0次

    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

    相关文章

      网友评论

          本文标题:git快速入门

          本文链接:https://www.haomeiwen.com/subject/ovdjqqtx.html