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