git使用

  1. 版本管理工具有哪些?

VSS 微软的版本控制管理工具,仅支持Windows系统,简单好用,单仅局限于团队级开发,不能胜任企业级开发工作。
CVS 典型的C/S软件,功能相对单一,简陋,适合几个人的小型团队,在数据量不大的情况下性能可以接受。
SVN 前身是CVS,包括了CVS的特点,也增加了一些新功能;
ClearCase、StarTeam闭源集中式
GIT、Mercurial、Monotone开源分布式

  1. GIT相比SVN和其他版本控制工具有什么优势?

2.1设计思想

  1. svn 是基于revision的也就是delta,git是基于状态的;

  2. svn单分支是一条revision的时间线,git则是由commits组成的DAG;

  3. branch的设计,svn是revision-on-writegit是DAG上加一个引用;

2.2使用体验

1.Git可以本地commit,可以随便保存各种历史痕迹,svncommit就到服务器了,发现commit错了就要回滚重来;

2.Git branch拉取和切换很简单,svn一个branch就是一个copy;

3.分布式去中心化使得团队的维护更加容易

4.分支的合并速度更快

5.微commit和微branch,每个微小的修改都可以使用branch和commit

2.3主要区别:

Svn是集中版本控制系统,版本库存放在中央服务器,干活时从中央服务器获得最新版本,干完活推到中央服务器,必须联网才行。

Git是分布式版本控制系统,没有中央服务器,每台电脑都是一个完整的版本库,这样工作时不需要联网,在多人协作时推送到远端就可以。

每个开发可以有属于自己的整个工程的本地拷贝。隔离的环境让各个开发者的工作和项目的其他部分修改独立开来

即自由地提交到自己的本地仓库,先完全忽略上游的开发,直到方便的时候再把修改反馈上去。

Git提供了强壮的分支和合并模型。不像SVN,Git的分支设计成可以做为一种用来在仓库之间集成代码和分享修改的『失败安全』的机制。

如你所见,仅使用几个Git命令我们就可以模拟出传统Subversion开发环境。对于要从SVN迁移过来的团队来说这太好了,但没有发挥出Git分布式本质的优势。

功能分支工作流背后的核心思路是所有的功能开发应该在一个专门的分支,而不是在master分支上。

这个隔离可以方便多个开发者在各自的功能上开发而不会弄乱主干代码。 另外,也保证了master分支的代码一定不会是有问题的,极大有利于集成环境。

3.1 Git常用命令流程

image.png
image.png

Workspace工作区、Index/Stage 暂存区、localrepository本地仓库区、remote repository 远程仓库区

3.2 Git常用命令

A.初始设置

git config --global user.name “Leon”
git config –global user.email "Leon@163.com"

B.本地操作

      #添加指定文件到暂存区
      git add [file1] [file2] [file3]…
      #添加指定目录到暂存区,包括子目录
      git add [dir]
      #添加当前目录的所有文件到暂存区
      git add .
      #删除工作区文件
      git rm [file1] [flie2]
      #检出独立分支(跟踪主分支)
      git checkout –b new-feature master
      #推送本地分支到远程
      git push –u origin new-feature

C.远端操作

            #克隆远端代码到本地
      git clone <git 地址>
      #远端抓取
            git fetch
      #与本地当前分支合并
      git merge
      #抓取并合并
      git pull
      #推送到远端(在当前追踪分支时local branch和:可省略)
      git push [-f] [local branch]:[remote branch]

D.分支操作

      #列出本地分支、远程分支、本地和远程分支
             git branch、git branch –r、git branch–a
      #新建分支,但仍停留在当前分支
       git branch [branch name]
      #新建分支,并切换到该分支
       git checkout –b [branch name]
      #新建分支,并与指定的远程分支建立追踪关系
       git branch  -- track  [branch name] [remote branch]
      #切换到指定分支(已存在的分支)
       git checkout [branch name]
      #切换到上一分支
       git checkout –
      #合并指定分支到当前分支(branch A为待合并的分支,当前分支可以省略)
       git merge [branch A]
       #删除本地分支
       git branch –d [branch name]
      #删除远程分支
       git push origin –delete [branch name]
       git branch –dr [remote branch]

E.代码提交

  #提交暂存区到仓库区(全部修改)
  git commit –m “message”
     #提交暂存区指定文件到仓库区
     git commit [file1] [file2]… -m “message”
     #提交工作区自上次commit之后的变化直接到仓库区(跳过暂存区)
     git commit –a
     #提交时显示所有diff消息
     git commit –v
     #使用一次新的commit 替代上次的提交
       如果代码没有任何新的变化,则用来修改上次的提交信息
     git commit –amend  -m “[message]”

F.查看信息

#显示有变更的文件
git status
#显示当前分支的历史版本
git log
#显示commit历史,以及每次commit发生变更的文件
git log –stat
#显示某个commit之后的所有改动,每个commit占据一行
git log HEAD –pretty=format:%s
#显示某个文件的历史版本
git log –follow [file]
git whatchanged [file]
#显示指定文件相关的每一次diff
git log –p [file]
#显示最近N次提交信息
git log –n –pretty –oneline
#显示所有提交过的用户,按提交次数排序
git shortlog –sn
#显示指定文件什么人在什么时间修改过
git blame [file]
#显示暂存区和工作区的区别
git diff
#显示n天之内修改了多少代码
git diff –shortstat “@{n day ago}”
#显示当前分支的最近几次的提交
git reflog

G.撤销操作

#恢复暂存区的指定文件到工作区
git checkout [file]
#恢复某个commit的指定文件到暂存区和工作区
git checkout [commit] [file]
#恢复暂存区的所有文件到工作区
git checkout .
#重置暂存区的指定文件与上一次commit保持一致,单工作区不变
git reset [file]
#重置暂存区和工作区,与上一次commit保持一致
git reset –hard
#重置当前分支的指针为指定的commit,同时重置暂存区,单工作区保持不变
git reset [commit]
#重置当前分支的HEAD为指定的commit,同时重置暂存区和工作区,与指定的commit保持一致
git reset –hard[commit]
#将未提交的变化移除
git stash

4.工作流程

https://ourai.ws/posts/working-with-git-in-team/
https://github.com/xirong/my-git/blob/master/git-workflow-tutorial.md

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

推荐阅读更多精彩内容

  • 声明:这篇文章来源于廖雪峰老师的官方网站,我仅仅是作为学习之用 Git简介 Git是什么? Git是目前世界上最先...
    横渡阅读 3,948评论 3 27
  • 这是我在学习Git的过程中所做的读书笔记的相关总结,希望能对刚刚接触Git或Github的小伙伴们带来一点点帮助,...
    sonack阅读 2,489评论 9 56
  • 前段时间参加了一个学习培训班,上周4的晚间课,大概在晚上九点下的课,我和一个同学两个人,感觉有点饿,就在楼下...
    钦见未来阅读 292评论 2 3
  • 人生是一个不断体验的过程,经历了,有了经验,有了经验,就有了收获,无论是教训,还是喜悦,教训提醒我们更好提...
    59b172acb91b阅读 313评论 0 5
  • 1、感恩父母给予我生命。 2、感恩祖辈将我养育。 3、感恩母亲、祖母为家的巨大付出。 4、感恩亲友们对我家的照顾。...
    朱晓军阅读 129评论 0 0