Git是一个版本控制系统,用来追踪计算机文件的变化的工具,也是一个供多人使用的协同工具。它是一个分布式的版本控制系统,本文将简单介绍如何使用。简单来说,就是你要和你的伙伴一起完成一项任务,但是你们要互相交换修改,查看自己的历史版本等。版本控制系统就是帮助我们做这个的。

网上一堆教程,难得讲得清楚的。这里也不废话介绍原理之类的,直接说明如何使用。由于Git是一个分布式文件控制系统,所以一般采用一个服务器方便大家交换修改用的。每个人本地都有一个版本库,保存自己的历史版本,然后每个人可以把自己的修改提交到服务器上,被人就可以获取你的修改了。因此,Git的版本库(Repository)对于每个人来说有两个,一个是远程的,一个是本地的。这篇博客就是描述怎么从远程服务器克隆版本到本地,以及如何分享本地修改到远程的。

一、从远程仓库中下载到本地

这个就是说我在远程服务器(或者是GitHub上公开的项目)的有一个项目,并且该项目是放在了类似GitHub的版本控制系统上,例如我们自己在一个远程的Linux上搭建了GitLab服务然后供大家使用(GitHub是免费的公开的项目分享,可以搭建私有的库,但是私有库是收费的,所以一般大家自己有服务器就在自己服务器上安装一个GitLab服务就好了)。现在GitHub或者是我们自己的GitLab上有个项目,并且我们也是有权限访问的,那么这小节介绍的就是如何把远程项目导入到本地。

1.1、首先打开git的界面(一般git都是用命令操作比较多,安装好git之后,打开git.bash就可以了)之后设置一下全局变量(也就是你访问git时候的用户名和邮箱了),如果是公开的项目可以省略这一步。

1. git config --global user.name "dufei"

2. git config --global user.email "dufeizj@163.com"

1.2、进入你想把项目存到本地的位置,比如我想存到本地D盘的GitTest文件夹中,那就使用Git.bash进入到这个文件夹(没有就创建一个),然后执行"git init"初始化这个文件夹(也就是在这个文件夹下创建一个.git文件夹,将一些配置信息放进来)

1. cd d:/gittest

2. git init

如下图所示

1.3、找到你想克隆到本地项目的远程仓库地址,例如我想从GitHub上拷贝我的WebTemplate项目到本地,那么就执行git clone命令:git clone 如下图所示

接下来等一会这个项目就会克隆到本地了。查看一下本地就能看到这个项目了。接下来就可以基于这个项目进行开发了。

二、将本地已有项目分享到远程仓库中

这小节就是说你远程已经建立了一个空的仓库,现在需要把本地的某个项目分享到远程的仓库中。

2.1、打开终端,然后进入你项目所在的目录,执行如下命令,对目录初始化,这样就会在这个项目的文件夹下多了.git文件夹了,和上面类似。

1. cd d:/gittest/WebTemplate

2. git init

2.2、将当前项目下所有的文件添加到本地的git仓库的暂存区(如果只想共享一部分,那就不用.,就把对应的文件或者文件夹列出来就行,这里用add表示将当前文件放到暂存区,其实并没有提交)

1. git add .

2.3、接下来提交暂存区文件到本地仓库,使用git commit命令,后面-m表示message,意思是提交本次修改的信息。

1. git commit -m "inital commit"

2.4、将本地库与远程库进行关联,这时候假设你在远程库上已经有了一个仓库,比如我的WebTemplate项目的远程地址就是: ,那么关联操作命令如下:

1. git remote add origin https://github.com/df19900725/WebTemplate.git

这里git remote表示对远程仓库的操作,origin是远程仓库本体(默认分支名称),add表示将远程的库加入,也就是关联的操作,接下来我们使用git remote -v命令查看关联结果发现已经关联上了:

1. git remote -v

如下图所示

2.5、最后把本地文件进行提交即可

1. git push origin master

git push表示提交代码的意思,origin表示远程的分支名称,master表示本地分支名称,上面代码就是说把本地的master分支推送到远程端,操作之后可以在远程看到了。

三、从远程仓库更新本地文件

多人协作开发的时候,每次开发前第一步是从远程将别人提交的修改更新到本地,因为如果你不更新直接编程会导致自己的版本号比远程新,特别容易造成冲突。所以一般先更新再提交修改。从远程更新时候第一步先查看一下远程的分支情况,然后将指定的分支更新到本地。

3.1、查看远程分支

1. git remote -v

如下图所示

我们看到远程只有一个origin分支,那么我们直接根据这个更新就可以了。

3.2、将远程修改更新到本地

git fetch origin master

前面说过origin是远程仓库分支,master是本地分支,所以这个命令就是将远程分支更新到本地。

3.3、合并远程与本地

1. git merge origin/master

远程修改更新到本地之后要做merge操作才能看到最终修改。

当然git fetch -> git merge 操作可以使用git pull代替。这样只要执行一步就好了。

git pull

四、将本地修改提交到远程

提交本地修改到远程三步,第一步是add文件,表示要提交修改的文件,第二步commit代码到暂存区,第三步push代码到远程仓库,其实在第一小节我们已经说过了。

1. git add README.md

2. git commit README.md 'test'

3. git push origin master

如果是提交GitHub之类的可能还要用户名密码登录:

git分布式版本控制系统常用的操作的更多相关文章

  1. 关于git(分布式版本控制系统)的一些操作和命令

    很久没上博客写东西了,今天闲着无聊就不想敲代码,所以看了看有没有一些好玩的东西,这不让我发现了git这个源代码版本控制工具,话不多说,就让我来简单的分享一下它的一些操作和命令以及命令所执行的含义吧! ...

  2. GIT分布式版本控制系统

    Git诞生历史 我想大家还记得Linus torvalds在1991年时发布了Linux操作系统吧,从那以后Linux系统变不断发展壮大,因为Linux系统开源的特性,所以一直接受着来自全球Linux ...

  3. 手把手教你玩转Git分布式版本控制系统! (转载)

    目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 Git诞生历史 ...

  4. 手把手教你玩转Git分布式版本控制系统!

    目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 1 Git诞生历 ...

  5. 《Linux就该这么学》自学笔记_ch21_使用Git分布式版本控制系统

    <Linux就该这么学>自学笔记_ch21_使用Git分布式版本控制系统 文章主要内容: 分布式版本控制系统 使用Git服务程序 提交数据 移除数据 移动数据 历史记录 还原数据 管理标签 ...

  6. Git ——分布式版本控制系统

    Git ——分布式版本控制系统 本人git主页地址:https://github.com/lendoon/test.git git使用心得:初次接触git在课堂上,老师给我们提供了一个代码托管的场所, ...

  7. g4e基础篇#2 Git分布式版本控制系统的优势

    g4e 是 Git for Enterprise Developer的简写,这个系列文章会统一使用g4e作为标识,便于大家查看和搜索. 章节目录 前言 1. 基础篇: 为什么要使用版本控制系统 Git ...

  8. GIT 分布式版本控制系统的简单使用介绍

    GIT 分布式版本控制系统的简单使用介绍 1.GIT的概念Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git 与 SVN 区别:1. GIT不仅仅是个版本控制系统,它 ...

  9. 开发效率优化之Git分布式版本控制系统(一)

    阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680本篇文章将先从Git分布式版本控制系统来阐述开发效率优化 一,企业 ...

随机推荐

  1. C#语言开发规范

    1.  命名规范 a) 类 [规则1-1]使用Pascal规则命名类名,即首字母要大写. eg: Class Test { ... } [规则1-2]使用能够反映类功能的名词或名词短语命名类. [规则 ...

  2. case when then[转]

    Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...

  3. iOS UIWebView 和 WKWebView 的 cookie 获取,设置,删除

    Cookie简介说到Cookie,或许有些小伙伴会比较陌生,有些小伙伴会比较熟悉.如果项目中,所有页面都是纯原生来实现的话,一般Cookie这个东西或许我们永远也不会接触到.但是,这里还是要说一下Co ...

  4. 修改默认 JVM 参数 securerandom.source

    最近在云服务器上部署tomcat的时候,执行 startup.sh老是卡住了. 开始以为是日志配的不对,因为在对象中引入的是slf4,不是apache的log4j,后面把所有引入的地方都修改为Apac ...

  5. 应该知道的一些Markdown语法

    目录 快速输入标题 斜体和粗体,删除线 分隔线 外链接 无序列表 有序列表 定义型列表 插入图片 文字引用 标签分类 表格 行内代码块 代码段 注脚 待办事宜 Todo 列表 显示当前文章的目录 快速 ...

  6. HDU6315 Naive Operations(线段树 复杂度分析)

    题意 题目链接 Sol 这题关键是注意到题目中的\(b\)是个排列 那么最终的答案最多是\(nlogn\)(调和级数) 设\(d_i\)表示\(i\)号节点还需要加\(d_i\)次才能产生\(1\)的 ...

  7. python基础:冒泡和选择排序算法实现

    冒泡排序和选择排序   首先引用一下百度百科对于冒泡算法的定义:   冒泡排序算法的原理如下: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素做同样的工作,从开始第一对到结尾 ...

  8. (生产)better-scroll - 下拉刷新

    Options 参数 startX: 0 开始的X轴位置 startY: 0 开始的Y轴位置 scrollY: true 滚动方向为 Y 轴 scrollX: 'true' 滚动方向为 X 轴 cli ...

  9. 1像素border

    1像素border 利用伪类和媒体查询: 伪类: border-1px($color) position:relative &:after display: block position: a ...

  10. HTTP杂记

    HTTP请求中的浏览器Timing信息: stalled:浏览器发出请求到这个请求可以发出的等待时间 proxy negotiation: 代理协商的时间 request sent:请求的第一个字节发 ...