很久之前就用起了git,但都是用在从github上clone项目上,或者hexo的博客提交上,直到前段时间加入了学校的技术中心,需要用git进行文件管理,才去了解了下git的具体使用方式。

什么是git

Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。它与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。它不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。

工作流程

一般来说,git的工作流程分为以下几步

  • clone Git 资源作为工作目录
  • 在克隆的资源上添加或修改文件
  • 如果源文件被修改了,可以进行资源更新
  • 提交前查看修改
  • 提交修改
  • 修改完成后,如发现错误,可以撤回提交并再次修改后重新提交

基本使用方式

创建仓库

首先创建一个文件夹,在文件夹中右键,git bush,键入

git init

执行完该命令后,会在当前目录下生成一个.git目录。

然后我们新建一个readme.txt文件,使用Notepad++打开,随便输入一些内容。

然后执行下面步骤

$ git add readme.txt
$ git commit -m "first"

这里,git commit -m后面的内容指的是对本次提交的说明,可以输入任何内容。

版本控制

我们先进行几步这样的操作,将刚才创建的readme.txt里的内容修改,然后执行提交操作,-m后面的内容就写当前次数,重复两遍差不多。这样,我们就提交了三个版本,版本1: first, 版本2: second ,版本3: third。当然,在实际工作中,并不可能记得每次修改的内容,因此,我们可以用以下命令查看。

$ git log

如果我们想退回上一个版本,那么我们可以输入

$ git reset --hard HEAD^

然后去查看一下,发现文本内容变为了第二次提交时的内容,再用git log查看,确实回退到了第版本二,那么,这是不是意味着我们退不回去了呢?当然不是,如果你知道版本3的commit id的话,还是可以返回的。commmit id?那是啥?就是在你输入 git log 时,显示的一大串内容中,每一段 commit 后面的那串字符。

$ git reset --hard id

输入上面的内容,就可以退回去了,这里 id 不一定要全输完,只需要输如一部分即可,Git会自动去找,但也不能太短,因为Git可能会找到多个版本号,就无法确定是哪一个了。

同时,git还提供了一个命令

$ git reflog

用来记录你的每一次命令,同时,使用该命令时,也会显示被修改的版本的 commit id。

远程仓库

前面讲的仓库是属于本地的,但是当这个项目是团队协作的时候,我们就需要远程仓库了。我们可以在github上创建一个仓库,输入本地仓库的文件夹名,根据GitHub的提示,在本地仓库下运行命令:

$ git remote add origin git@github.com:xxxxx/xxx.git

添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

下一步,就可以把本地库的所有内容推送到远程库上:

$ git push -u origin master

推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样,在之后的操作中,只需要输入以下命令即可

$ git pull
$ git add .
$ git commit -m ""
$ git push origin master

总结

这样,关于git的一些基本操作就讲完了,关于其他的一些分支管理、标签管理等就之后用到的时候再做补充了。

版本控制系统 git 之基础讲解的更多相关文章

  1. [.net 面向对象程序设计进阶] (27) 团队开发利器(六)分布式版本控制系统Git——在Visual Studio 2015中使用Git

    [.net 面向对象程序设计进阶] (26) 团队开发利器(六)分布式版本控制系统Git——在Visual Studio 2015中使用Git 本篇导读: 接上两篇,继续Git之旅 分布式版本控制系统 ...

  2. [.net 面向对象程序设计进阶] (26) 团队开发利器(五)分布式版本控制系统Git——图形化Git客户端工具TortoiseGit

    [.net 面向对象程序设计进阶] (26) 团队开发利器(五)分布式版本控制系统Git——图形化Git客户端工具TortoiseGit 读前必备: 接上篇: 分布式版本控制系统Git——使用GitS ...

  3. [.net 面向对象程序设计进阶] (25) 团队开发利器(四)分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境

    [.net 面向对象程序设计进阶] (25) 团队开发利器(四)分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境 本篇导读: 前面介绍了两款代码管理工具 ...

  4. 分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境(服务器端及客户端)(转)

    近期想改公司内部的源码管控从TFS为git,发现yubinfeng大侠有关git的超详细大作,现将其转载并记录下,以防忘记,其原博客中有更加详细的git及.net开发相关内容.原文地址:http:// ...

  5. 一篇文章带你了解热门版本控制系统——Git

    一篇文章带你了解热门版本控制系统--Git 这篇文章会介绍到关于版本控制的相关知识以及版本控制神器Git 我们可能在生活中经常会使用GitHub网页去查询一些开源的资源或者项目,GitHub就是基于G ...

  6. 菜鸟学IT-分布式版本控制系统Git的安装与使用

    分布式版本控制系统Git的安装与使用 本次作业要求来于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2103 一.首先在window ...

  7. 分布式版本控制系统 Git 的安装与使用

    作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2097 远端库地址:https://github.com/CJL29 ...

  8. 分布式版本控制系统Git的安装与使用

    分布式版本控制系统Git的安装与使用 作业要求来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2103 我的远端仓库地址是:htt ...

  9. 【软件工程】分布式版本控制系统Git的安装与使用

    作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2097 远端库地址:https://github.com/Richa ...

随机推荐

  1. 解决Centos下yum无法更新

    问题: http://mirrors.cloud.aliyuncs.com/epel/6/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 6 - ...

  2. Jade教程

    Jade 是一个高性能的模板引擎,它深受 Haml 影响,它是用 JavaScript 实现的,并且可以供 Node 使用. 如何在jade模板上加业务逻辑 if res.length==5 h1= ...

  3. 【转】Python之装饰器

    [转]Python之装饰器 本节内容 必要知识回顾 情景模拟 装饰器的概念及实现原理 回马枪(带参数的装饰器) 一. 必要知识回顾 在开始说装饰器之前,需要大家熟悉之前说过的相关知识点: 函数即“变量 ...

  4. gdb revert, Go to previous line in gdb

    Yes! With the new version 7.0 gdb, you can do exactly that! The command would be "reverse-step& ...

  5. llinux除了软连接本地文件夹同步:mount

    mount --bind /srv/dir1   /srv/dir2dir1:被共享的文件夹dir2:需要同步的文件夹

  6. 【bzoj1901】dynamic ranking(带修改主席树/树套树)

    题面地址(权限题) 不用权限题的地址 首先说说怎么搞带修改主席树? 回忆一般的kth问题,我们的主席树求的是前缀和,这样我们在目标区间的左右端点的主席树差分下就能求出kth. 那么我们如何支持修改操作 ...

  7. 基于 OpenSSL 的 CA 建立及证书签发

    http://rhythm-zju.blog.163.com/blog/static/310042008015115718637/ 建立 CA 建立 CA 目录结构 按照 OpenSSL 的默认配置建 ...

  8. 功率 dbm 和 mw 的换算

    射频知识; 功率/电平(dBm):放大器的输出能力,一般单位为w.mw.dBm.dBm是取1mw作基准值,以分贝表示的绝对功率电平. 换算公式:电平(dBm)=10lgw5W  → 10lg5000  ...

  9. PYTHON-操作系统基础

    预习:操作系统基础1,编程语言的分类2,多版本共存3,执行python程序的两种方式4,变量5,输入输出6,运算符7,基本数据类型8,流程控制之if ------------------------- ...

  10. jQuery版本的jsonp

    1.一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面.动态网页.web服务.WCF,只要是跨域请求,一律不准: 2.不过我们又发现,Web页面上调用js文件时则不 ...