很久之前就用起了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. mysql 查询优化案例汇总

    一 简介:此文章为经历过的sql案例集合和相关思路 二 案例1: 现象: 测试环境出现select语句,join2张表多次join,explain结果如下 出现 using where,using j ...

  2. linux bash的重定向

    cnblogs原创 下面几种bash重定向各表示什么意思? find / -name passwd > /dev/null >& > /dev/null find / -na ...

  3. Database学习 - mysql 连接数据库 库操作

    连接数据库 语法格式: mysql -h 服务器IP -P 端口号 -u用户名 -p密码 --prompt 命令提示符 --delimiter 指定分隔符 示例: mysql -h 127.0.0.1 ...

  4. python 设计及调试的一些小技巧

    在“笨办法学习python”中介绍了一些设计函数以及调试技巧: 参考网址:http://www.jb51.net/shouce/Pythonbbf/latest/ex36.html If 语句的规则¶ ...

  5. jQuery中【width(),innerWidth(),outerWidth()】

    这个问题,已经别扭我多年了,今天终于彻底解决了,拿出来庆贺一下.jquery作为开源项目,无论从思路上,还是从严谨性上,让人崇敬. 随着时间的流逝,jquery的一些功能被逐渐挖掘出来.通过jQuer ...

  6. 【转】Python之数据序列化(json、pickle、shelve)

    [转]Python之数据序列化(json.pickle.shelve) 本节内容 前言 json模块 pickle模块 shelve模块 总结 一.前言 1. 现实需求 每种编程语言都有各自的数据类型 ...

  7. Tomcat中catalina run后台运行脚本

    编写启动脚本start.sh,将其放在/srv/aubapp/bin/下 #!/bin/sh #设置web应用程序目录 export CATALINA_BASE="/srv/aubapp&q ...

  8. 深入理解linux内核v4l2框架之videobuf2【转】

    转自:https://blog.csdn.net/ramon1892/article/details/8444193 Videobuf2框架 1. 什么是videobuf2框架? 它是一个针对多媒体设 ...

  9. ASP.NET Core Identity 实战(3)认证过程

    如果你没接触过旧版Asp.Net Mvc中的 Authorize 或者 Cookie登陆,那么你一定会疑惑 认证这个名词,这太正式了,这到底代表这什么? 获取资源之前得先过两道关卡Authentica ...

  10. mysql caching_sha2_password异常分析

    使用navicat连接mysql报错 解决办法: 通过命令行登录mysql后,输入: alter user 'root'@'localhost' IDENTIFIED WITH mysql_nativ ...