VS with Git

  • 认识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/

时间: 2024-11-10 13:27:57

VS with Git的相关文章

Windows Git+TortoiseGit简易使用教程

转载自 http://blog.csdn.net/jarelzhou/article/details/8256139 官方教程:http://tortoisegit.org/docs/tortoisegit/(英文版) 为什么选择Git 效率 很多人有一种习惯吧,什么软件都要最新的,最好的.其实吧,软件就是工具,生产力工具,为的是提高我们的生产力.如果现有的工具已经可以满足生产力要求了,就没有必要换了.生产效率高低应当是选择工具的第一位. 历史 开源世界的版本控制系统,经历了这么几代: 第一代,

git 把本地创建的项目放到github上

很早之前就注册了Github,但对其使用一直懵懵懂懂,很不熟练.直到昨天做完百度前端技术学院的task,想把代码托管到Github上的时候发现自己对于Git的操作是如此之愚钝,所以今天决定把Git好好学习一遍,好让自己以后能更好地使用Github,主要还是通过Git教程 - 廖雪峰的官方网站来学习.简要步骤可以直接看最后的总结. Git的安装就不说了. 第一步:我们需要先创建一个本地的版本库(其实也就是一个文件夹). 你可以直接右击新建文件夹,也可以右击打开Git bash命令行窗口通过命令来创

git基本操作

一.分支操作 git init 初始化仓库 git status 查看仓库变化 git add 从工作树提交到暂存区 git commit 从暂存区提交到本地仓库 git commit --amend 修改上条记录的备注 git commit -am 'comment' 提交到暂存区和本地仓库 git diff 工作树和暂存区插播 git diff HEAD 工作树和最本地仓库的差别 git checkout -- filename 撤销工作需修改(修改.删除) git log [filenam

《个人-GIT使用方法》

本文章转载于:http://blog.csdn.net/gemmem/article/details/7290125 1. Git概念 1.1. Git库中由三部分组成 Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制..git目录位于工作目录内. 1) 工作目录:用户本地的目录: 2) Index(索引):将工作目录下所有文件(包含子目录)生成快照,存放到一个临时的存储区域,Git 称该区域

Windows下使用Git Bash提交代码到GitHub

以前上传代码到Github主要是通过客户端Github Desktop或者网页,换电脑后感觉安装客户端太麻烦,了解命令行的方式就很有必要了. 这里的实验是把一些代码更改提交到Json.git仓库里. "ls" 为Linux命令,用于查看当前目录下的文件及文件夹. "git init" 命令用于对当前目录进行初始化,使当前的project-name目录交由Git进行管理. "git add" 命令可以对指定文件添加跟踪.如果后面跟空格加点号&quo

linux下git常用命令

1 安装: sudo apt-get install git 2 创建一个版本库: 新建一个文件夹,进入这个目录之后 git init 3 创建一个版本: git add 文件名或目录 #表示将当前文件的修改放入缓存区 先不提交 git commit -m '版本名称' #将缓冲区提交建立一个版本 4 查看版本记录 geit log 每条一行查看版本信息 git log --pretty=oneline 按图形方式查看 有合并版本的时候很清晰 git log --pretty=oneline -

Ubuntu Linux下通过代理(proxy)使用git上github.com

github.com,作为程序员的代码仓库,我们经常会用到.但有时候我们不能直接通过网络链接它,只能通过代理. 这里我有一台代理服务器,起初我以为在终端设置了代理环境就行了,其设置为在你的~/.bashrc里增加以下几行: export http_proxy="http://proxy-server:3128/" export https_proxy="http://proxy-server:3128/" export ftp_proxy="http://

git入门(4)团队中git保管代码常用操作

在团队中协作代码时候,一定要熟练使用以下git命令,不至于把代码库弄乱, PS:一定要提交自己代码(git push)时候,先进行更新本地代码库(git pull),不然提交异常 git常用命令 1·.clone相应项目 git clone ... 举个栗子(只是个栗子) git clone https://github.com/saucxs/watermark.git 2.新建分支并且切换到这个分支 git checkout -b 分支名(英文名) git chenckout -b dialy

已经在Git Server服务器上导入了SSH公钥,可用TortoiseGit同步代码时,还是提示输入密码?

GitHub虽好,但毕竟在国内访问不是很稳定,速度也不快,而且推送到上面的源码等资料必须公开,除非你给他交了保护费:所以有条件的话,建议大家搭建自己的Git Server.本地和局域网服务器都好,不信你试试,那速度,怎一个爽字了得! 默认情况下,使用TortoiseGit同步代码,每次都需要输入用户名和密码,但为了方便可以在客户端创建ssh密钥,用于服务器端和客户端的认证(详细过程大家可参考这里),但有时会出现“ 已经在Git Server服务器上导入了SSH公钥,可用TortoiseGit同步

使用git命令下载仓库中的代码

git是一种免费开源的分布式版本控制器.好像不能在页面点击下载源代码. 在Ubuntu下,安装git工具. sudo apt install git 使用命令下载 git clone 源代码仓库地址 如: #git clone git://git.denx.de/u-boot.git 地址是在仓库页面找到的.