Git是目前世界上最先进的分布式版本控制系统

Git的安装

1.在linux上安装

  • 你可以先输入git,看看系统是不是已经自带了git
  • 或者 sudo apt-get install git  就可以成功安装
  • 如果是老版的Debian或Ubuntu,我们使用 sudo apt-get install git-core
  • 如果是其他版本的linux,我们可以在官网下载源码,解压,然后依次输入 ./config,    make,   sudo make install 进行一个安装

2.在Mac OS X上安装Git

  • 安装homebrew,然后通过homebrew安装git
  • 安装Xcode,Xcode中集成了git

3.windows安装

  • 安装包,直接安装即可

安装完成后,我们输入两条命令,进行最后一步的设置

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

注意git config的--global参数,用了这个参数,表示这台机器所有的Git仓库都会使用这个配置,当然可以以针对摸一个仓库进行一个指定。

Git创建版本库

什么是版本仓库呢?版本仓库又名仓库,英文名repository,你可以简单的理解成是一个目录,这个目录里面的所有文件都可以被git管理起来。每一个文件的修改、删除git都能跟踪,以便任何时刻都可以追踪历史,或者是将来的还原

创建一个版本库是很简单的,首先选择一个合适的位置,创建一个空目录:

$ mkdir firstgit
$ cd firstgit
$ pwd

pwd 命令用于显示当前的目录。

$ git init 

初始化,将这个空目录变成我的git可以管理的仓库

初始化后,会创建一个隐藏的.git的目录,这个目录是get来跟踪管理版本库的。

将文件添加到版本库

在版本库的目录下编写一个readme.txt 文件

第一步:用命令 git add 告诉git,将文件添加到仓库

$ git add readme.txt

提示:如果你的readme中存在换行,可能会报一个

warning: LF will be replaced by CRLF

的错误,这是由于windows中的换行符为 CRLF, 而在linux下的换行符为LF而造成的

解决方案:

$ git rm -rf .git
$ git config --global core.autocrlf false

删除.git,在全局禁用自动转换,然后重新初始化即可

第二步:用命令 git commit  告诉git把文件提交到仓库

git commit -m "描述"

  • 1 file changed:一个文件被改动
  • 2 insertions:插入了两行内容

补充:

可以多次git add  filename,然后一次性的commit,当然也可以使用 git add . 表示是当前目录中的所有文件

Git版本管理

状态监控

此时我们修改readme.txt 文件

然后我们运行 git status 命令来查看结果

git status 命令可以让我们时刻掌握仓库的当前状态,上述输出告诉我们,readme.txt 文件被修改了,但是还没有被提交。

使用git status 只能监视那个文件修改了,但是并不能看见被修改的内容

git diff可以使我们看见是那个文件进行了那些修改

知道了readme.txt作了什么修改后,在把它提交到仓库就可以放心许多

$ git add .

在执行git commit之前,我们先在此运行一下git status来查看一下当前的仓库状态

$ git status

发现了吗?变成绿色了,这就表示将要被提交的修改包括readme.txt

知道这些我们就可以放心提交了

$ git commit -m "描述"

此时,我们在此输入命令 git status

版本回退

现在我们已经知道怎么监控这些状态了。

其实,每一次的commit都相当于一次游戏中的存档,我们知道,游戏中的存档是可以进行读档的,那么我们的git如何回档呢?

1.我们可以使用 git log 来查看我们的提交的历史记录

$ git log

git log 命令显示的是从最近到最远的提交日志,我们可以看到总共有2次提交,每条提交信息的commit唯一id,作者,日期,描述都有显示

如果不想显示那么多,我们可以在git log后加上参数 --pretty=oneline参数

在以上的输出信息中,黄色的便是commit id(版本号,唯一id)

知道这些如何退回版本呢?

在Git中,用 HEAD 表示当前的版本,也就是最新的提交,上一个版本就是HEAD^,上上一个版本就是HEAD^^,向上的100个版本就是HEAD~100

我们回到上一个版本可以使用

$ git reset --hard HEAD^
$ git reset --hard 版本号

然后我们查看readme.txt文件,发现内容果然变了。

注意:

此时我们再输入 git log 看看现在的版本状态

然后我们就发现了,原本最新的那一条记录没有了。我们是不是没有办法回到原本最新的那条记录了?

不是的,其实只要我们找到之前最新记录的 commit id 就可以回退了

要是我们找不到了,怎么办??!!!

没关系,我们的 git 提供了  git reflog 命令可以查看你的每一次命令

nice,这就可以找到之前最新的那条记录的commit id啦,完美!

工作区和暂存区

工作区:就是你在电脑上能够看到的目录,这个目录就是一个工作区

版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库

  Git的版本库里存了许多的东西,其中最重要的就是成为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针HEAD

注意:其实当我们commit的时候,实际上就是把暂存区的所有内容提交到当前分支

而我们只用的add就是将修改提交到了暂存区(Stage)

一旦提交过后,我们的工作区就是最新的内容了,就不存在修改了,所以工作区是干净的(git status)

撤销修改

$ git checkout --file

可以丢弃工作区的修改,eg:

$ git checkout --readme.txt

意思就是把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

  • 一种是readme.txt修改后,还没有被提交到暂存区,现在,撤销修改就回到和版本库一模一样的状态
  • 一种是readme.txt修改后,已经添加到了暂存区,又做了一个修改们,现在,撤销修改就回到添加到暂存区后的状态

删除文件

如果我们想要删除一个文件,在本地删除后

输入命令 git rm,再git commit 就可以真的删除啦

如果是自己删错了,就可以使用 git checkout --file 来恢复

git checkout其实就是用版本库里的版本替换工作区的版本,所以无论是修改还是删除,都可以 一键还原

Git代码远程仓库

  • 使用命令: git remote add origin git@...(你的远程仓库的地址)     这算是关联上了远程代码仓库了
  • git push -u origin master 第一次推送master分支的所有内容
  • 此后,每次本地提交后,只要有必要,就可以使用命令 git push origin master推送最新的内容到代码仓库

将代码仓库中的内容克隆到本地代码仓库

$ git clone git@...(要克隆的git仓库地址)

Git分支管理

未完待续....

Git的介绍和使用的更多相关文章

  1. git使用介绍

    Git简单介绍 参考网址: git使用简介 这个教程推荐使用:git教程 git和svn的差异 git和svn的最大差异在于git是分布式的管理方式而svn是集中式的管理方式.如果不习惯用代码管理工具 ...

  2. SourceTree 01 - git 客户端介绍

    SourceTree - git客户端介绍 SourceTree系列第1篇 --->> SourceTree 01 - git 客户端介绍(http://www.cnblogs.com/g ...

  3. 1、git基础介绍及远程/本地仓库、分支

    1. Git基础介绍 基于Git进行开发时,首先需要将远程仓库代码clone到本地,即为本地仓库.后续大部分时间都是基于本地仓库上的分支进行编码,最后将本地仓库的代码合入远程仓库. 1.1. 远程仓库 ...

  4. git基础介绍

    git基础介绍 这是git操作的基础篇,是以前的写的操作文档,就没有进行手打,直接把图片贴进来了,你们担待哈,有不正确的地方可以指正出来,我将在第一时间去修改,多谢哈! 一.文件状态:git系统的文件 ...

  5. GitHub的SSH key配置以及常用的git命令介绍

    一. GitHub的SSH key配置 (以windows为例,Mac iOS系统类似) SSH Key 是一种方法来确定受信任的计算机,从而实现免密码登录.Git是分布式的代码管理工具,远程的代码管 ...

  6. 版本控制工具(SVN/Git)介绍

    文章大纲 一.SVN介绍二.Git介绍三.IDEA使用SVN和Git四.总结五.参考文章   一.SVN介绍 1. SVN服务器搭建和使用 首先来下载和搭建SVN服务器,下载地址如下: http:// ...

  7. GIT命令介绍

    Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下. 区别与集中式的分布式实现!!!! 集中 ...

  8. Git基本介绍(三大分区及核心内部构造)

    1. Git三大工作区(工作区.暂存区和版本库) 工作区(WORKING DIRECTORY): 直接编辑文件的地方,肉眼可见直接操作: 暂存区(STAGIN AREA):数据(快照)暂时存放的地方: ...

  9. Git的介绍以及安装

    Git的简单介绍 Git是一个开源的分布式版本控制系统,可以有效,高速的处理从很小到非常大的项目管理,GIT是为了帮助linux内核开发而开发的一个开放源码的版本控制软件 Git的安装 Linux平台 ...

  10. Git&Github介绍

    git&github 什么是GIT 是一个源代码管理工具 源代码为什么要管理起来? 你写的东西就叫源代码,第三方的库和框架都不算. 让源代码可以被追溯,主要记录每次变更了什么,谁主导这次变化. ...

随机推荐

  1. (巴什博弈 sg函数入门1) Brave Game -- hdu -- 1846

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=1846 首先来玩个游戏,引用杭电课件上的: (1) 玩家:2人:(2) 道具:23张扑克牌:(3) 规则: ...

  2. 深海划水队项目--七天冲刺之day7

    站立式会议: 昨天已完成的工作:设置游戏按键,检查重合.检查是否超出边界.检查是否可以下落,方块的硬下落和软下落方法. 今日已完成的工作:添加方法:方块的着陆和消除. 工作中遇到的困难:在消除方块的时 ...

  3. Tomcat 系统架构与设计模式1

    从 Tomcat 如何分发请求.如何处理多用户同时请求,还有它的多级容器是如何协调工作的角度来分析 Tomcat 的工作原理,这也是一个 Web 服务器首要解决的关键问题 Tomcat 总体结构 To ...

  4. Android-HttpUtil工具类

    Http(Java 版 HttpURLConnection)请求的相关工具类 public class HttpUtil { private static final int TIMEOUT_IN_M ...

  5. [react002] component基本用法

    1 什么是component 设计接口的时候,把通用的设计元素(按钮,表单框,布局组件等)拆成接口良好定义的可复用的组件. 这样,下次开发相同界面程序时就可以写更少的代码,也意义着更高的开发效率,更少 ...

  6. JavaScript数组(参考资料)

    JavaScript数组的长度和元素类型都是非固定的.因为数组的长度可随时改变,并且其数据在内存中也可以不连续,所以 JavaScript 数组不一定是密集型的,这取决于它的使用方式.1.Array. ...

  7. Winform窗体改变语言类型的方式

    Winform改变语言类型比较复杂,需要根据不同语言应用语言资源.而软件在进行语言切换时,需要将当前的UI文化线程引用对应的语言类型.常用的有三种方式,此处使用两种,对比发现其中的优缺点: /// & ...

  8. Cesium Language (CZML) 入门2 — CZML Content(CZML的内容)

    原文:https://github.com/AnalyticalGraphicsInc/cesium/wiki/CZML-Content 以下是描述CZML文档或者流中可能存在的内容.要解释CZML文 ...

  9. 知识记录——Session与Cookie

    Session: Session是“会话”的意思,然而,因为http协议是无状态的,那么每次客户端请求服务器端,服务器端都会以“崭新”的页面展示给客户端,这在静态的html页面中是不会存在任何影响,但 ...

  10. Android Library 使用规则

    1. 一个项目必须声明为 is library.使用该 library 的项目导入该 library. 2. library 的 manifect 中 activity 的声明需明确包名以避免找不到. ...