Git小结

早期工作时候在当时的公司里使用过Git管理代码,当时只是停留在会用就好.对于Git并没有一个整体的概念,以及深入的理解.
最近要将代码版本管理从SVN(Subversion)迁移到Git仓库,买了《GitHub入门与实践》补充一下Git知识.所谓工欲善其事,必先利其器:-)

一、关于Git

  • Linux的创始人Linus Torvalds在2005年开发了Git的原型程序,由于linus的本人的影响力和Git在功能及性能上的无可挑剔,程序员们愿意接受Git.随着众多开发者的努力,加之GitHub的普及,使用Git的人越来越多.
  • Mac中已预装了Git,系统版本10.13.6的terminal中使用git version命令可以看到版本为git version 2.17.1 (Apple Git-112)
  • 版本管理器分为两种类型:集中型 (SVN)和分散型 (Git). 各有各的优势,只不过集中型相对简单.

二、一些Git命令

  • 全局配置

    • 姓名:git config --global user.name "your name"
    • 邮箱:git config --global user.email "your email"
    • Git命令颜色(增加辨识度):git config --global color.ui auto
  • git init——本地仓库初始化:cd到指定目录下,执行git init.不进行初始化在对应文件夹下将不能进行Git操作

  • git status ——查看Git仓库的状态,新增的文件会在Untracked files下显示

  • git add ——向暂存区添加文件,文件会为tracked状态

    • git add xxx提交指定文件
    • git add -A 提交所有变化
    • git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
    • git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
  • git commit——将add到暂存区的内容保存到仓库

    • 直接执行git commit会进入编辑器,编辑提交的内容描述.输入i插入,写好后esc 输入:q直接退出 :wq保存退出
    • git commit -m "xxx" xxx为本次提交的概述信息
    • git commit -am "xxx" 对于tracked的文件可以直接使用-am
  • git log——查看提交日志

    • git log -- pretty=short 显示更为简要的概述信息
    • git log xxx xxx为指定文件
    • git log -p 查看提交所带来的改变
    • git log -p xxx 查看指定文件的提交日志
  • git log --graph——以图表形式查看分支

  • git reflog——查看当前仓库执行过的操作日志

  • git diff——查看当前工作树和暂存区的差别

    • git diff HEAD 查看与最新提交的差别.HEAD指向当前分支的最新一次提交的指针
  • git branch——显示分支一览表

  • git checkout -b——创建并切分支

    • git checkout -b bug-A = git branch bug-A + git checkout bug-A
    • git checkout master 切换到master分支
    • git checkout - 切换到bug-A分支,使用-切换到上一分支
    • git checkout -b bug-A origin/bug-A获取远程仓库的bug-A分支到本地,并命名为bug-A
  • git merge——合并分支(在对应的master分支进行操作)

    • 直接执行git merge会进入编辑器,接下来操作同上面的commit
    • git merge --no-ff xxx xxx为对应分支名称
      Git小结_第1张图片
      --no-ff的区别
  • git reset——回溯历史版本

    • git reset --hard xxx xxx为版本哈希值,哈希值可用log或reflog命令查看
  • git commit --amend——修改上一条commit提交记录的概述

  • git rebase -i——压缩历史,上一次的commit有个小错误,想这一次提交与前一次的概述合并,可以用git rebase -i HEAD~2进入编辑器修改内容(前2次的就~3,以此类推)

  • git remote add——添加远程仓库,例:git remote add origin [email protected]:用户名/xxx.git远程仓库名称设置为origin(标识符)

  • git push——推送至远程仓库,例:git push -u origin master命令将本地的master分支推送到origin, -u选项会指定为origin

  • git clone——获取远程仓库,例:git clone [email protected]:用户名/xxx.git,克隆后默认处于master分支

  • git pull——获取最新的远程仓库分支,例:git pull origin branch-A将本地的branch-A分支更新为最新状态

  • git tag xxx——创建标签

    • git tag -a xxx -m 'my version xxx'创建一个含附注的标签
  • git branch -D xxx——删除分支

三、Git Flow——以发布为中心的开发者模式

以下是一个分支策略流程: By Vincent Driessen

① 从开发版的分支(develop)创建工作分支(feature branches),进行功能的实现或修正
② 工作分支(feature branches)的修改结束后,与开发版的分支(develop)进行合并
③ 重复上述①和②,不断实现功能直到可以发布
④ 创建用于发布的分支(release branches),处理发布的各项工作
⑤ 发布工作完成后与master分支合并,打上版本标签(Tag)进行发布
⑥ 如果发布的软件出现Bug,以打了标签的版本为基础进行修正(hotfixes)

Git小结_第2张图片
A successful Git branching model

这样的流程亮点在于考虑了Bug的应急措施,但是有时显得过于复杂,分支很多,所以可以结合自身的项目场景在此git flow上,略微调整.

你可能感兴趣的:(Git小结)