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为对应分支名称
      --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 git@github.com:用户名/xxx.git远程仓库名称设置为origin(标识符)

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

  • git clone——获取远程仓库,例:git clone git@github.com:用户名/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)

A successful Git branching model

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

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

推荐阅读更多精彩内容

  • git 使用笔记 git原理: 文件(blob)对象,树(tree)对象,提交(commit)对象 tree对象 ...
    神刀阅读 3,714评论 0 10
  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,414评论 9 163
  • Git 是一个很强大的分布式版本控制系统。它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势...
    Sunny君907阅读 230评论 0 0
  • 安装Git Git的下载地址:Git官网下载地址 Git本地仓库和命令 配置用户 下载完Git后,右键会有一个Gi...
    TokyoZ阅读 4,438评论 1 7
  • 首先:想用git就必须先安装git,安装完git后可执行下面操作 一:创建版本库:windows下创建仓库,所有名...
    陈小井_阅读 398评论 1 1