git使用手册

写在最前

git 版本管理

版本管理是程序开发中必不可少的环节,常用的版本管理工具有git 和svn
git的版本管理方式与SVN略有不同;在SVN中,代码的版本控制是集中式管理, git属于分布式管理. 本文的最后会有详细介绍.

git 的管理方式如下图所示:
首先需要从服务器上clone 程序, 当程序下载到本地以后, 可以在本地修改代码,建立分支等等;
如果想要提交代码,需要push 操作,产生冲突的时候需要merge

git的使用图

在server上创建代码仓库

此处以gitblit服务器为例
可以选择版本库的权限和初始化的文件


在服务器中建立版本库

使用Pycharm 同步server 的代码

Pycharm提供了有关版本控制的客户端工具:git、svn、cvs等等;使用方法如下: 在Pycharm的welcome 界面点击 checkout from version control-->git

使用pycharm

在提示框中填写正确的URL和项目下载的目录即可(目录名称可以和项目的名称不一致)

填写URL

Pycharm 中提交本地的git

点击 view->选中“toolbar”,此时在窗口的菜单栏下方出现了git工具栏,按照下图方式操作,即可完成本地的版本信息提交(注意: 本地版本的message 信息一定要写)。此时本地的版本与server上的不再同步了。

在本地修改版本

将本地版本提交到server上

如果想要将本地修改的程序与服务器的程序同步,需要做push操作;

push操作
这里需要选择本地的分支(此处是 ADD MESSAGE )

建立分支

在做push操作的时候,可能会产生 “冲突”导致无法正常提交; 这个时候需要在server上建立分支,并将程序提交到分支上去,后期再进行merge操作;

在向server 提交代码的时候,可以建立分支
push到分支

如何解决冲突?

冲突出现的原因是 server上的内容和本地的内容完全不一致导致的。可以采用两种方式解决:

  1. 建立分支,
  2. 将本地的版本合并到master 版本中(首先建立分支,然后合并分支)

建立分支的过程在上一节已经讲过;本节主要介绍合并;合并分支的过程如下所示:

Step1: 首先,选要将分支合并到哪个版本:点击pycharm右下角的按钮,切换版本

点击pycharm右下角的按钮,切换版本

Step2: 选择合并

合并操作可以在pytcharm中操作,如下图所示。如果服务器上存在冲突,就修改服务器的冲突; 如果本地出现的冲突,就修改本地的冲突 ;


pycharm中的merge操作

合并做完以后,可以在pycharm的Version Control中查看是否已经合并:

pycharm的Version Control

Step3 : 将合并的版本提交到server中即可

这次,再提交到服务器即可,通过查看查看提交次数来验证是否合并

服务器上查看提交次数

总结


说一下我的理解: 以上主要讲述pycharm的操作过程,对操作的描述比较简单,重在理解。 通过以上诸多操作,我们发现:几乎所有的操作(创建分支、提交代码、添加Tag)都是可以在本地完成的,如果想把本地的代码和服务器的同步,使用push操作即可。

如果产生冲突,就比较麻烦了:冲突的产生是由于本地和服务器之间的数据不能正常同步,存在冲突文件

需要先将产生冲突的文件放在新的分支里,并且上传到服务器 然后将版本切换到mster下,将新的分支合并到master里面 最后,再提交到maste上

其他

关于pycharm中git 的文件颜色

细心的同学应该发现pycharm使用了git以后,很多文件开始显示不同的颜色,在此解释一下:


clipboard.png

Git发展史

cvs –svn

在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!你也许会想,为什么Linus不把Linux代码放到版本控制系系统呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对 CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和 Linux的开源精神不符。

Linus花了两周时间用C写了一个分布式版本控制系统,这就是Git。一个月之内,Linux系统的源码已经由Git管理了。Git也迅速成为最流⾏的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移到GitHub,包括jQuery,PHP,Ruby等等。

集中式VS分布式的版本控制

1)集中式版本控制系统,

版本库是集中存放在中央服务器的,你干活的时候,用的都是自己的电脑,所以要先从 中央服务器取得最新的版本,然后开始干 活,干完活了,再把自己的活推送给中央服 务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后 回到家自己改,改完了,再放回图书馆。集中式版本控制系统最大的弊端就是必须联网 才能工作,如果在局域网内还好,速度够快,可如果在互联网上,遇到网速慢的话,可 能提交个10M的文件就需要5分钟,这还不得把人给憋死啊。

总之是一句话: 使用之前,需要先从server上同步代码,如果出现冲突,需要修改自己的代码,或者修改服务器的代码,解决了冲突以后才能提交---》服务器和本地始终是只有一个版本的

2)分布式版本控制系统

没有“中央服务器”,每个⼈的电脑上都是一个完整的版本库,这 样,你工作的时候, 就不需要联网了,因为版本库就在你自己的电脑上。既然每个认电脑上都有个完整的版 本库,那多个人如何协作呢?比如说你在自己电脑上改 了文件A,你的同事也在他的 电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到 对方的修改了。和集中式版本控制系统相比,分布式版本控制系统的安全性要好很多, 因为每个电脑里都有完整的版本库,某个人的电脑坏掉了不要紧,而集中式版本控制 系统的中央服务器要是出了问题,所有人都没法干活了

总之是一句话: 使用之前,需要先从server上同步代码,如果出现冲突,需要修改自己的代码,或者修改服务器的代码,解决了冲突以后才能提交---》服务器和本地的版本可以不同步,也可以提交与Sever上不同的版本,即是从master上建立分支

常用的git服务器

目前可以创建私人代码仓库的网站:
gitlab

github

gitblit

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

推荐阅读更多精彩内容

  • 四、 分支开发工作流 现在你已经学会新建和合并分支,那么你可以或者应该用它来做些什么呢? 在本节,我们会介绍一些常...
    常大鹏阅读 2,105评论 3 24
  • 一、 Git 分支简介 几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分...
    常大鹏阅读 2,955评论 2 41
  • Git 本文是根据扔物线大神的git手册和https://git-scm.com/book/zh/v2进行整理 1...
    lovesosoi阅读 1,122评论 3 6
  • 下载及安装 1. 下载地址 windows版本 linux版本 可视化界面sourcetree (跳过注册,在%...
    KSRisk阅读 293评论 0 1
  • 五、远程仓库的使用 为了能在任意 Git 项目上协作,你需要知道如何管理自己的远程仓库。 远程仓库是指托管在因特网...
    常大鹏阅读 1,373评论 3 20