提到Git,大多数人第一反应应该就是Github这个大型多人程序员在线交友网站了。但大名鼎鼎的Github它跟今天小编要介绍的Git有什么关系呢?
Git的官方介绍说法是一个“分布式版本控制系统”,简单来说就可以认为是能够将存储在多个电脑上的不同版本的代码文件进行版本管理,是一个可以运行在每个人电脑上面的一个软件,可以简单的理解为一个协同办公软件;而Github呢,则是能够提供对“版本管理”服务支持的一个服务器供应商。打个比方,就是我们每个人都在用手机上的微信,但是抛开微信服务器端,我们每个人手里的微信就没法使用,因为微信是要通过服务器来给每个人传递消息的,Git就类似于微信这款软件,而Github类似于微信服务器端,用来交换每个微信软件端的信息。不同于微信只能用官方服务器的是,Git允许任何电脑成为服务器端,于是,能够提供Git服务器端的地方也不仅仅只是Github一个,只是它比较出名而已,像国内就有码云(Gitee)、腾讯开发者平台(dev.tencent.com)等。
那么如何使用Git呢?小编今天就最常用的IDE之一——Visual Studio建立新项目并使用Git同步为例,介绍一下Git的一些简单的使用方法和规则。
步骤1 ~ 4:如何建立一个项目的git仓库(git repo)
步骤5 ~ 6:如何实现代码的同步
步骤7:典型应用场景介绍
——————正文分界线——————
1、在提供git服务的服务器上建立Repo(Github、Gitee、……)。
这里需要注意的是,在服务器上创建的最好是一个空的repo。当然,有需求且服务器提供额外创建Repo时自动生成相关文件选项时也可以由服务器创建一些简单的README.md和其他说明文件,不推荐由服务器自动创建“.gitignore”文件。
这里以Gitee为例:Gitee账号建立完后,右上角可以点击+号找到新建仓库
仓库设置中有下列需要注意的地方:
2、在电脑想要存储代码的路径git clone刚刚创建的Repo
3、使用Visual Studio建立一个新项目。
创建时项目放置的位置不要与刚刚git clone代码的位置相同,先放在一个临时的文件夹里。
创建成功后,关闭Visual Studio,然后把刚刚创建的项目(一般而言是一个文件夹和一个.sln文件)整个复制到git clone的文件夹内。此时,文件夹内应该同时拥有下列内容:
-
一个.git文件夹【里面包含git各种信息】
-
一个.vs文件夹【里面包含visual studio相关信息】
-
一个自己的项目文件夹
-
一个.sln解决方案描述文件
4、然后双击打开这个.sln文件,启动Visual Studio。
由于Visual Studio内部已经集成了Git插件,当这个sln文件打开的时候,由于这个文件夹本身是由git clone创建的,里面有.git文件存在,Visual Studio会在右边的“团队浏览器(Team Explorer)”中打开Git界面。如果在Visual Studio中未自动开启git插件,则需要找到Visual Studio Installer里为自己的VS添加git工具。
如果团队界面浏览器没有打开,则需要从视图菜单调出来这个界面:
下面展示的是团队浏览器界面
第一步我们需要添加.gitignore文件,不然git会将文件夹里所有的文件都同步,比如一些debug的log信息、VS的项目信息之类,这些都不需要同步到repo上。点击团队浏览器里的设置界面,然后点击仓库设置
在设置里面,将ignore和attributes下面的两个添加按钮都点一下即可,然后导航栏里的主菜单按钮即可回到主菜单。
第二步就是开始将这个项目以及.gitignore文件同步到Repo中。点击团队浏览器里的更改
这里显示了刚刚所有一系列我们在最开始的git clone了之后文件夹内部的所有变化
由于最开始建立的是一个新的repo里面几乎什么都没有,所以后面所有的操作(1-复制文件夹和sln文件;2-建立.gitignore文件)就需要都被同步。这里需要注意的是,“更改”里显示了两个部分,一个叫做“staged changes”,另一个部分是“changes”(其实就是“unstaged changes”)。关于什么是staged/unstaged change大家可以自行搜索,简单的来说就是staged是记录过的,VS在创建.gitignore文件的时候贴心地自动帮忙stage了,所以我们这里要做的是把下面的改变也记录下来,需要做的是点击加号
于是,所有的操作(1和2)都记录下来了
此时,与git操作类似,我们需要提交修改(commit),在黄色框里填入这次提交的信息,点击“Commit Staged”即可完成修改的提交。
需要注意的是,这里的提交仅仅是提交到本地的git存储库,还未与服务器上的repo同步,还需要同步这个步骤。Git里同步常用的操作有两个,一个是推送(push),一个是拉取(pull)。把代码推送到repo是push(推出去,本地代码推送到服务器),另一个是pull(拉回来,本地代码从服务器拉取)。回到主菜单之后点击同步选项,然后再同步里选择推送即可。
此时在网页上查看服务器上的repo,已经可以看到刚刚推送的代码了
5、当我们修改代码之后,只需要重复“更改-记录-提交-推送 (change – stage – commit – push) ”即可。
6、当我们需要在另一台电脑工作时……
假如我们一直在电脑A工作,代码一直与repo同步,然后换到了电脑B,则需要在电脑B上首先git clone自己的代码,然后在电脑B上修改了代码,也push到repo上,此时,当回到电脑A工作时,代码已经与repo上的有区别(因为在电脑B上工作了),要让自己的代码与repo同步就需要使用pull了。
为了模拟这种改变,我们可以直接在服务器上修改某个文件,这里我在cpp文件中添加了一行
此时回到Visual Studio中,可以看到我们的代码还是没有与repo保持一致
此时我们需要点击同步选项里的拉取
这样我们的代码就被同步到本地了
另外一个常用的保持本地与服务器repo相同的命令是“提取(Fetch)”。关于提取和拉取的区别这里就不细分了,如果代码仅仅是由单人来维护时,一般仅需要拉取就足够了,感兴趣的朋友可以自行深入了解。
7、典型应用场景分析:
在办公室有电脑A,在远程办公地点(例如家里书房)有电脑B。
-
项目建立时,在办公室电脑A上将repo以及git的最初设置(步骤1~4)完成,下班时进行代码推送(push)
-
回到远程办公地点在电脑B上想继续电脑A上的工作,首先git clone自己的repo,之后进行代码更新,完成工作后进行推送(push)
-
回到办公地点电脑A上,拉取(pull)自己的repo,在工作时间段完成代码更新,下班时进行代码推送(push)
-
回到远程办公地点B,拉取(pull)自己的repo,完成代码更新后推送(push)
-
重复(iii)和(iv)即可保证可以远程代码的同步。
由此可见,只需在项目建立之初将git设置一次,并且在其他任一电脑上clone一次,即可在这些电脑上实现代码的同步。另外,repo可不止只能存储代码,图片/视频等任意文件都可以可以同步的!不过能不能成功push这就需要看repo服务器的规定了,有一些repo限制了单个文件大小,某些超大的文件就无法成功同步啦,此时想要完成协同应该怎么办呢?那就需要租用云服务器自己搭建git服务器端完成协同啦,另外也可以参考我们另一篇文章里的协同盘搭建方法:
往期精彩