本文来自数据学习网(https://www.datalearner.com),专注于机器学习方法、数据挖掘技术和编程技术,原文地址:https://www.datalearner.com/blog/1051521123408432
Git是一个版本控制系统,用来追踪计算机文件的变化的工具,也是一个供多人使用的协同工具。它是一个分布式的版本控制系统,本文将简单介绍如何使用。简单来说,就是你要和你的伙伴一起完成一项任务,但是你们要互相交换修改,查看自己的历史版本等。版本控制系统就是帮助我们做这个的。
网上一堆教程,难得讲得清楚的。这里也不废话介绍原理之类的,直接说明如何使用。由于Git是一个分布式文件控制系统,所以一般采用一个服务器方便大家交换修改用的。每个人本地都有一个版本库,保存自己的历史版本,然后每个人可以把自己的修改提交到服务器上,被人就可以获取你的修改了。因此,Git的版本库(Repository)对于每个人来说有两个,一个是远程的,一个是本地的。这篇博客就是描述怎么从远程服务器克隆版本到本地,以及如何分享本地修改到远程的。
一、从远程仓库中下载到本地
这个就是说我在远程服务器(或者是GitHub上公开的项目)的有一个项目,并且该项目是放在了类似GitHub的版本控制系统上,例如我们自己在一个远程的Linux上搭建了GitLab服务然后供大家使用(GitHub是免费的公开的项目分享,可以搭建私有的库,但是私有库是收费的,所以一般大家自己有服务器就在自己服务器上安装一个GitLab服务就好了)。现在GitHub或者是我们自己的GitLab上有个项目,并且我们也是有权限访问的,那么这小节介绍的就是如何把远程项目导入到本地。
1.1、首先打开git的界面(一般git都是用命令操作比较多,安装好git之后,打开git.bash就可以了)之后设置一下全局变量(也就是你访问git时候的用户名和邮箱了),如果是公开的项目可以省略这一步。
git config --global user.name "dufei"
git config --global user.email "dufeizj@163.com"
1.2、进入你想把项目存到本地的位置,比如我想存到本地D盘的GitTest文件夹中,那就使用Git.bash进入到这个文件夹(没有就创建一个),然后执行”git init”初始化这个文件夹(也就是在这个文件夹下创建一个.git文件夹,将一些配置信息放进来)
cd d:/gittest
git init
![](http://www.datalearner.com/resources/blog_images/961fbe0c-f85b-4ed8-a193-a7dc03a2b4f0.png)
1.3、找到你想克隆到本地项目的远程仓库地址,例如我想从GitHub上拷贝我的WebTemplate项目到本地,那么就执行
git clone
命令:
git clone https://github.com/df19900725/WebTemplate.git
![](http://www.datalearner.com/resources/blog_images/900818bc-b0d7-47d3-93d5-7218b2d9fc50.png)
![](http://www.datalearner.com/resources/blog_images/0353aa25-dcdd-48ec-99cf-297dba000845.png)
接下来等一会这个项目就会克隆到本地了。查看一下本地就能看到这个项目了。接下来就可以基于这个项目进行开发了。
二、将本地已有项目分享到远程仓库中
这小节就是说你远程已经建立了一个空的仓库,现在需要把本地的某个项目分享到远程的仓库中。
2.1、打开终端,然后进入你项目所在的目录,执行如下命令,对目录初始化,这样就会在这个项目的文件夹下多了.git文件夹了,和上面类似。
cd d:/gittest/WebTemplate
git init
2.2、将当前项目下所有的文件添加到本地的git仓库的暂存区(如果只想共享一部分,那就不用.
,就把对应的文件或者文件夹列出来就行,这里用add表示将当前文件放到暂存区,其实并没有提交)
git add .
2.3、接下来提交暂存区文件到本地仓库,使用git commit命令,后面-m表示message,意思是提交本次修改的信息。
git commit -m "inital commit"
2.4、将本地库与远程库进行关联,这时候假设你在远程库上已经有了一个仓库,比如我的WebTemplate项目的远程地址就是:https://github.com/df19900725/WebTemplate.git ,那么关联操作命令如下:
git remote add origin https://github.com/df19900725/WebTemplate.git
这里git remote表示对远程仓库的操作,origin是远程仓库本体(默认分支名称),add表示将远程的库加入,也就是关联的操作,接下来我们使用git remote -v命令查看关联结果发现已经关联上了:
git remote -v
![](http://www.datalearner.com/resources/blog_images/b4111c2f-f2a7-4523-a7ac-4a1c7111129d.png)
2.5、最后把本地文件进行提交即可
git push origin master
git push表示提交代码的意思,origin表示远程的分支名称,master表示本地分支名称,上面代码就是说把本地的master分支推送到远程端,操作之后可以在远程看到了。
三、从远程仓库更新本地文件
多人协作开发的时候,每次开发前第一步是从远程将别人提交的修改更新到本地,因为如果你不更新直接编程会导致自己的版本号比远程新,特别容易造成冲突。所以一般先更新再提交修改。从远程更新时候第一步先查看一下远程的分支情况,然后将指定的分支更新到本地。
3.1、查看远程分支
git remote -v
![](http://www.datalearner.com/resources/blog_images/b4111c2f-f2a7-4523-a7ac-4a1c7111129d.png)
我们看到远程只有一个origin分支,那么我们直接根据这个更新就可以了。
3.2、将远程修改更新到本地
git fetch origin master
前面说过origin是远程仓库分支,master是本地分支,所以这个命令就是将远程分支更新到本地。
![](http://www.datalearner.com/resources/blog_images/80cd1633-de48-4b92-87a2-c2d7c110bec3.png)
3.3、合并远程与本地
git merge origin/master
远程修改更新到本地之后要做merge操作才能看到最终修改。
![](http://www.datalearner.com/resources/blog_images/3c71e8ab-5940-4091-832c-8594c519ee00.png)
当然git fetch -> git merge 操作可以使用git pull代替。这样只要执行一步就好了。
git pull
![](http://www.datalearner.com/resources/blog_images/b679728c-aea1-44c9-8be5-73198a8c4001.png)
四、将本地修改提交到远程
提交本地修改到远程三步,第一步是add文件,表示要提交修改的文件,第二步commit代码到暂存区,第三步push代码到远程仓库,其实在第一小节我们已经说过了。
git add README.md
git commit README.md 'test'
git push origin master
如果是提交GitHub之类的可能还要用户名密码登录:
![](http://www.datalearner.com/resources/blog_images/e4e01f1f-de03-4754-bd12-c155eba9b228.png)
![](http://www.datalearner.com/resources/blog_images/53bcd169-7731-4b5d-9950-dacd719d7fec.png)