Git

作者: 荷尔蒙榨汁机 | 来源:发表于2017-11-10 22:46 被阅读0次

    Git 简介


    Git是目前最先进到分布式版本控制系统,是由Linux创始人Linus于2002年开发出来。起初Linus开发git是为了方便合并世界各地Linux志愿者发给他的代码,但是发布后git迅速成为最流行的分布式版本控制系统。2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。


    Git的原理


    image
    • 工作区(Working Directory)可以理解为本地电脑的目录,包含.git文件。
    • 版本库(Repository)可以理解为一个用来记录仓库文件夹内每一次变化的一个库。

    Git的常用操作


    Git的操作主要围绕以下几点:

    1. 从git取数据
    2. 将改动传回git
    3. 版本文件管理
    4. 分支管理
    5. 标签管理

    从git取数据

    git clone

    在Github上选择我们需要克隆到本地的仓库,找到对应的SSH链接。

    image

    使用git clone git@github.com:MaxYanDD/test.git将远程仓库克隆到本地。

    远程仓库文件被下载到本地。

    git pull和git clone的区别

    • git clone 从远程服务器克隆一个一模一样的版本库到本地,复制的是整个版本库,叫做clone.(clone是将一个库复制到你的本地,是一个本地从无到有的过程。
    • 从远程服务器获取到一个branch分支的更新到本地,并更新本地库,叫做pull.(pull是指同步一个在你本地有版本的库内容更新的部分到你的本地库)
      git pull相当于是从远程获取最新版本并merge(合并)到本地 git pull = git fetch + git merge,git fetch更安全一些。

    将改动传回github


    我们对clone下来仓库中的文件进行修改后,使用git status可以查看当前的修改信息。

    使用git diff查看修改了哪些地方。

    根据提示我们还可以使用git checkout -- README.md撤销这次修改。
    检查修改无误后,我们开始将我们的修改推送到github:
    第一步.使用命令git add README.md,将修改文件放入暂存区。
    第二步.使用命令git commit -m "修改了第一行",将文件提交到版本库。参数-m后面为本次修改的描述。
    第三步.使用git remote add origin git@github.com:MaxYanDD/test.git命令将本地仓库和Github远程仓库进行关联。
    第四步.使用git push -u origin master将本地库内容推送到远程仓库。

    在github仓库中可以看到本体修改已经生效了。

    版本文件管理


    版本号

    当需要进行版本回退前,我们可以先使用git loggit log --pretty=oneline或者git reflog来查看从最近到最远的提交日志,并找到版本号。

    版本修改

    需要对版本进行修改时可采用下列命令:

    git reset --hard HEAD^     ##回退至上一个版本
    git reset --hard HEAD^^    ##回退至上上个版本
    git reset --hard HEAD~100  ##往上回退至第100个版本
    git reset --hard 版本号     ##回退到指定版本号
    

    文件删除

    • 当本地删除文件时,可以使用git checkout -- a.html来恢复。
    • 当本地删除问加,且仓库的也想删除时,需要通过git rm a.html,并且git commit -m "rm"

    撤销删除

    git checkout -- filename  ##  撤销修改回到和版本库一模一样的状态。
    git reset HEAD filename  ## 暂存区的修改回退到工作区
    

    分支管理


    通过创建分支,可以同时在多个分支同时进行开发。类似于鸣人学习螺旋丸,开挂一般。

    • 常用命令
    git branch            ##查看分支
    git branch dev        ##创建dev分支
    git checkout dev      ##切换到dev分支
    git checkout -b dev   ##创建并切换到dev分支等于上面两步
    git merge dev         ##将dev分支合并到当前分支
    git branch -d dev     ##删除dev分支
    git branch -D dev      ##强项删除dev分支
    
    • 实践操作
    • 冲突解决
      当两个分支对同一个文件修改后,有可能产生冲突这个时候合并后冲突部分都会保留,需要手动编辑并提交。冲突的判定应是行为粒度。

    使用git log --graph --pretty=oneline可以更为形象的查看分支冲突

    • 分支策略
      master用来发布版本,开发一般在dev分支以及其他分支上。
    • Bug分支
      修复bug时需要,建一个临时分支。
      当有开发未完成时,可使用git stash保存当前工作,BUG修复完成后,回到当前分支在git stash pop恢复。
    • 多人协作

    当通过git clone将远程仓库clone到本地时,Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin。但是如果在dev分支下开发的话,则不存在对应关系,需要通过git branch --set-upstream-to=origin/dev dev将本地dev分支和远程dev分支进行关联。

    标签管理


    发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。Git的标签是版本库的快照,其实它就是指向某个commit的指针。

    常用操作如下:

    git tag v1.0    #标签1.0打在最新的commit上
    git tag -a v0.1 -m "version0.1 released 0affebc    ## 创建带有说明的标签,用-a指定标签名,-m指定说明文字
    git tag -d v0.1    ## 删除标签v0.1
    git push origin :refs/tags/v0.9 ###删除远程标签
    git push origin v0.1    ## 推送v0.1标签到远程
    git push origin --tags    ##一次性推送全部尚未推送到远程的本地标签
    

    史上最浅显易懂的Git教程!

    相关文章

      网友评论

          本文标题:Git

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