码迷,mamicode.com
首页 > 其他好文 > 详细

VS with Git

时间:2015-08-04 10:49:57      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:

  • 认识Git
  • 测试环境
  • 添加到远端仓库
  • 从远端仓库克隆
  • 提交更改
  • 同步
  • 成员和权限管理
  • 分支管理,创建与合并分支
  • 解决冲突
  • TFS代码迁移到Git

认识Git

Git是目前世界上最先进的分布式版本控制系统。相对于分布式版本控制系统,也有集中式版本控制系统,比如TFS。

集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。

集中式版本控制系统最大的问题是必须联网才能工作,而且,如果中央服务器出问题,所有人没法工作了。

而分布式版本控制系统就不存在这样的问题,因为每个人的电脑中都有一个完整的版本库,在同步之前,所有操作都可以在本地仓库中完成。

集中式版本控制系统:

技术分享

分布式版本控制系统:

技术分享

分布式版本控制系统的本地操作流程图:

技术分享

工作目录,暂存区域和本地仓库这几个概念非常重要。

工作目录:即解决方案所在目录。

暂存区域:已添加,但还未提交到本地仓库。

本地仓库:已提交,相对于远端仓库而言的本地版本。

测试环境

  • vs2015
  • GitLab
  • 取消IE代理并且关闭fiddler

添加到远端仓库

基于已存在的项目,将它添加到远端仓库(GitLab)中。

比如,现在我要将本地项目HelloWebAPI添加到GitLab中,要进行以下操作。

1,解决方案上右键,选择将解决方案添加到源代码管理菜单,打开选择源代码管理窗口。或者打开菜单"文件/添加到源代码管理"也可以打开选择源代码管理窗口,如下图

技术分享

技术分享

2,选择Git,确定,在打开的更改窗口中,写上备注点击提交,此时项目已添加到本地仓库中了,但还没有发布到远端仓库。

技术分享

技术分享

技术分享

3,在发布到远端仓库之前,必须在GitLab上先建立一个远端仓库。

技术分享

点击Create Project按钮,即创建了一个远端仓库。

技术分享

复制地址,下面会用到。

技术分享

4,发布到远端仓库。

技术分享

点击发布按钮,可以看到已经发布成功了。

技术分享

此时进到GitLab项目的主页刷新页面,可以看到提交的记录,如下图。

技术分享


从远端仓库克隆

添加到远端仓库是基于本地已存在项目,而从远端仓库克隆是项目在本地不存在,需要从远端仓库克隆一份到本地的情形,操作步骤如下。

1,Git全局设置,可以设置用户名,email和存储库位置。用户名和email会显示在你的提交记录中,存储库位置便于统一远端仓库克隆时的路径,如下图。

技术分享

2,复制你要克隆的远端仓库的url,如下图。

技术分享

3,进入团队资源管理器的连接窗口,在本地Git存储库项中粘贴上前面copy的url,然后点击克隆按钮,这样就成功创建了一个本地存储库,如下图。

技术分享

技术分享

可以双击打开项目。

提交更改

远端仓库克隆到本地后,我们就可以在本地开发,并提交更改了。

1,签出代码并修改

我在readme文件中添加了一句话

技术分享

2,提交

在解决方案上右键,选择提交,进入团队资源管理器的更改窗口。

技术分享

输入注释,然后点击提交按钮,即可提交代码,需要注意的是,此时只是提交到本地存储库中,还不是远端存储库。

技术分享

提交按钮有个下拉菜单,这个后面会讲到,先点击提交(第1个)即可。

技术分享

技术分享

3,同步

要将本地的更改发布到远端存储库,我们还需要做同步操作,如下图。

我们先不管获取,拉取和推送这些,后面会讲。

技术分享

提示提交成功

技术分享

查看远端存储库,已经可以看到同步成功了。

技术分享

同步

进入到团队资源管理器的同步窗口,如下图。

技术分享

先来了解下这几个按钮的作用。

推送:将本地存储库的更改更新到远端存储库。

获取:在拉取之前获取所有传入提交。

拉取:从远端存储库获取最新版本。

同步:同步实际上同时进行了两个操作,先从远端存储库拉取(pull)最新版本,然后和本地存储库进行比较,进行自动合并(merge)后推送(push)到远端存储库。

1,获取最新版本

为了减少冲突,在开始开发新功能前,都会先去获取最新版本,获取的方式一般有两种,当然要依实际情况来选择。

1) 获取和拉取,在传入提交项可以看到团队其它成员的提交更改,可以拉取全部,或者拉取其中某个更改到本地。

技术分享

2) 同步,因为同步会同时进行两个操作,拉取和推送。所以这个操作适合本地存储库没有待推送的更改的情形,因为如果本地存在待推送的更改的时候,很容易导致冲突的发生。

技术分享

2,提交更改

当开发完某个功能,或者fix了某个bug时,就会去提交更改到远端存储库。

1) 推送,可以一次推送全部本地更改或提交一个,推送一个。

技术分享

2) 同步,也可以点击同步实现提交更改,当然,在同步之前最好拉取最新版本,这样可以减少冲突的发生。

技术分享

成员和权限管理

1,入口

技术分享

技术分享

有两种添加成员的方式,Add members是从人员清单中添加,Import members是从其它项目中批量导入成员。

技术分享

2,GitLab默认提供了四种角色,如果要允许成员提交更改的话,必须设定其角色为Master,否则会收到如下图的错误。

技术分享

技术分享

分支管理,创建与合并分支

1,创建分支

进入到分支面板,在当前分支上右键,选择从选定项创建本地分支。

注意,分远端存储库分支和本地分支,如果选择从本地创建分支,最好先获取最新版本。如果选择从远端存储库创建分支,最好先提交本地更改。

技术分享

输入分支名称,点击创建分支。

技术分享

创建成功,接着发布分支,即将分支推送到远端存储库。

技术分享

分支2015.07.29.HelloWebAPI1.0已经推送到远端存储库了。

技术分享

2,合并分支

为了模拟实际情形,先在分支2015.07.29.HelloWebAPI1.0上做些修改,然后提交更改,最后将分支合并到主线上。

在test2.txt中添加一行新的记录,并提交更改到本地存储库

技术分享

技术分享

切换到分支窗口,先切换到主线(master)分支,然后点击合并按钮,从分支合并选择源分支2015.07.29.HelloWebAPI1.0,当前分支选择目标分支master,然后点击合并按钮开始合并。

技术分享

合并,提交更改成功提示

技术分享

分支更新的代码已经合并过来了。

技术分享

推送更改到远端存储库

技术分享

进入GitLab,已经可以看到提交更改记录,并且主线代码已经更新了。

技术分享

主线代码已经更新

技术分享

解决冲突

当团队中两人或多个同时修改同一文件的同一代码段,后提交更改或获取更新的人就会碰到冲突。

1,冲突发生

以主线(master)的文件test1.txt为例,假如两人同时修改它。

张三在test1.txt的第3和4行新增两行代码,并提交到本地存储库。

技术分享

李四也在test1.txt的第3和第4行新增两行代码,并提交更改和推送到远端存储库。

技术分享

如果张三再去推送的话, 冲突就发生了。

技术分享

技术分享

2,解决冲突

先获取并拉取最新,然后解决冲突。

获取并拉取最新版本

技术分享

点击解决冲突链接,进入到解决冲突窗口

技术分享

点击合并按钮

技术分享

技术分享

源和目标的更改都勾选上,并且点击接受合并

技术分享

提交合并

技术分享

GitLab已更新

技术分享

TFS代码迁移到Git

因时间关系,暂时没有研究。这里有两篇文章大家可以参考一下

1,http://www.cnblogs.com/sorex/archive/2013/03/11/2954095.html

2,http://chriskirby.net/migrate-an-existing-project-from-tfs-to-github-with-changeset-history-intact/

VS with Git

标签:

原文地址:http://www.cnblogs.com/mcgrady/p/4701259.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!