一、Git简介

  Git 是一个开源的分布式版本控制软件,用以有效、高速的处理从很小到非常大的项目版本管理。 Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发。Git 是根据GNU通用公共许可证版本2的条款分发的自由/免费软件,官网:http://git-scm.com/。

  Git是目前世界上最先进的分布式版本控制系统(没有之一)。

  GitHub是一个基于Git的远程文件托管平台(同GitCafe、BitBucket和GitLab等)。

  Git本身完全可以做到版本控制,但其所有内容以及版本记录只能保存在本机,如果想要将文件内容以及版本记录同时保存在远程,则需要结合GitHub来使用。使用场景:

    - 无GitHub:在本地 .git 文件夹内维护历时文件;

    - 有GitHub:在本地 .git 文件夹内维护历时文件,同时也将历史文件托管在远程仓库;

  集中式和分布式:

    - 集中式:远程服务器保存所有版本,用户客户端有某个版本

    - 分布式:远程服务器保存所有版本,用户客户端有所有版本

1、安装Git

  Git下载地址:https://git-scm.com/downloads

  1)下载安装包,如下图:

  2)双击安装应用程序,以下是安装过程中需要注意的几步:

  3)点击下一步,如下图:

  4)点击下一步,如下图:  

  5)点击下一步,如下图:

  6)点击下一步,如下图:

  7)点击下一步,如下图:

  8)点击安装,如下图:

  9)安装完成后,“开始”菜单会新增一个Git文件夹,如下图:

  10)点击“Git Bash”(Git Bash是一个黑屏终端,仿linux的窗口,可使用linux命令),如下图:

二、配置Git

1、配置Git用户名和邮箱

  打开Git Bash终端,按照如下命令配置用户名和邮箱,注意,没有提示表示配置成功。

  配置用户名:$ git config --global user.name "你自己GitHub的用户名"

  配置邮箱:$ git config --global user.email "你自己GitHub的邮箱"

2、时光穿梭机(创建本地版本库,并使用命令管理版本)

  什么是版本库?

  版本库又名仓库,可以理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都有一个追踪历史,或者在将来某个时刻可以还原。

  创建版本库并使用命令管理版本:

  1)在一个合适的地方创建一个空目录,比如wllgit;

  2)在终端中使用cd命令进入刚创建的空目录(将文件夹拖入终端可快速输入文件夹目录),如下:

  3)使用git init命令把这个目录变成Git可以管理的仓库

  4)把文件添加到版本库(本地仓库)

    在上面创建的目录中创建一个文件(如demo.py),内容为print("hello world!")

    把文件添加到仓库,命令为:$ git add domo.py

    把文件提交到仓库,命令为:$ git commit -m "这里写注释"

    至此,我们已经在电脑上建好了本地仓库wllgit目录,接下来学习如何使用仓库管理版本。

  5)git status

    该命令可以让我们时刻掌握仓库当前状态,如下图:

  6)git diff
    该命令可以查看修改内容,如下图:

    当本地和仓库文件内容不一致时,将文件再次提交即可,如下图:

  7)git log或者git log --pretty=oneline(显示从最近到最远的提交日志)

    以上步骤主要是将不同版本文件提交到仓库,并且记录每次提交日志,接下来学习如何回退到之前的版本。

  8)版本回退

$ git reset --hard HEAD^
$ git reset --hard HEAD^^
$ git reset --hard HEAD~100
$ git reset --hard 具体版本号

    HEAD相当于一个指针,指向当前版本,如下图:

  9)git reflog

    该命令记录每一次的命令,如下图:

  10)git checkout -- filename

    如果文件filename已经被放到暂存区(执行git add filename,但未执行commit)后,又做了修改,此时,执行此撤销命令,就会回到添加至暂存区的状态。
    如果文件filename自修改后还没有被放到暂存区(执行git add filename),此时,执行此撤销命令,就会回到和版本库一模一样的状态。

    总之,该命令就是让文件filename回到最后一次git add或这git commit时的状态。

  11)掌握了上述管理仓库的操作,下面来了解相关概念,即工作区和版本库。

    Git把管理的文件分为了两个区域四个状态,如下图:

    工作区:当前开发程序所在目录称为工作区,即:工作开发都是在该目录,该区域的文件会有状态的变化且状态由git自动检测,如果程序中文件做任何操作(增、删、改),文件状态均会被检测到,可以使用【git status】命令查看。

    版本库:工作区检测到有文件发生变化,那么意味着较上一个版本之后对程序进行了修改,修改完成之后,可以当做下一版本进行提交,那么就是执行【git add .】 将所有文件提交到暂存区,然后再执行【git commit -m '又一个版本'】提交到版本库的分支即可,之后可以使用【git log】命令查看版本记录。

三、远程仓库

  GitHub是一个基于Git实现的代码托管的平台,可以将内容以及版本记录在远程也保存一份,这样就不用U盘来回拷了。PS: 类似GitHub的产品还有许多,如:GitLab、Bitbucket、码云等。

  简而言之,就是将我们的代码放在GitHub的服务器上,这样,不论在哪里,只要有网,就可以将远程仓库(GitHub上)的代码拉取下来,写完代码再同步上去。接下来介绍如何配置远程仓库。

1、配置基于GitHub实现代码托管的步骤

  1)注册GitHub

  2)创建ssh key

    打开Git bash黑屏终端,输入命令 ssh-keygen  -t  rsa  -C  "GitHub中绑定的邮箱"

    查看公钥内容,如下图:

    在GitHub(个人中心 -> Settings ->SSH and GPG keys)中添加公有密钥,如下图:

    填写完成后如下图:

    测试密钥是否通过,在Git Bash的黑终端输入命令  ssh -T git@github.com

    测试通过后,再看github中的ssh是绿色钥匙,如下图:

  3)创建远程仓库

    点击新建仓库按钮,如下图:

    填写仓库信息,如下图:

    创建完成后如下图:

  4)使电脑关联远程仓库

    复制GitHub中的SSH地址,如下图:

    在电脑的Git Bash终端输入命令 git remote add origin  远程仓库SSH地址

    删除关联命令(知道即可,此处不必执行)是 git remote rm origin

    推送本地库内容到远程库命令 git push origin master

    拉取远程库内容到本地库命令 git pull origin master

    注意:因为本篇先是建立了本地库wllgit目录,并且使用git init命令产生了.git文件,然后又将此本地库关联了远程仓库,因此,本库库和远程仓库是两个版本,因此要先执行拉取远程库的命令,且加上允许版本不一致的参数,即 git pull origin master  --allow-unrelated-histories

    注意,执行命令后会进入一个vim的模式,使用你掌握的linux命令退出编辑即可!

    执行成功后,本地仓库会多了一个README.md文件,如下:

    拉取完成后再执行推送的命令,如下:

    执行命令后,远程仓库中就与本地仓库文件一致,如下:

    此时,你就可以在电脑上对文件进行修改,然后再执行以下命令推送到远程仓库:

git add filename                     将修改文件添加到暂存区
git commit -m "修改内容注释" 将暂存区内容提交到本地仓库
git push origin master 将本地仓库内容推送到远程仓库

  5)实际开发中使用Git的步骤

    上面建立本地仓库,使用git init只是为了演示本地仓库配置,实际开发中,是应该先有远程仓库,再把远程仓库克隆到本地,克隆时就会自动生成管理本地仓库的隐藏文件.git。

    假设已经在GitHub上建立是远程仓库,现在电脑上没有本地仓库,我们需要将远程仓库内容克隆到本地,进入到合适的目录执行克隆命令  git clone  远程仓库SSH地址

    命令执行后,会在当前执行命令的目录下产生一个文件夹,其中包含远程仓库的文件内容,且还有一个隐藏文件.git,如下图:

    此时,你就可以在电脑上对文件进行修改,然后再执行以下命令推送到远程仓库:

git add filename                     将修改文件添加到暂存区
git commit -m "修改内容注释" 将暂存区内容提交到本地仓库
git push origin master 将本地仓库内容推送到远程仓库

    注意:如果项目中有.gitignore文件时,.gitignore文件中定义的文件夹不会被推送到远程仓库中。

Git的使用(1)的更多相关文章

  1. Git 子模块 - submodule

    有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目. 也许是第三方库,或者你 独立开发的,用于多个父项目的库. 现在问题来了:你想要把它们当做两个独立的项目,同时又想在 一个项目中使用另 ...

  2. Git 在团队中的最佳实践--如何正确使用Git Flow

    我们已经从SVN 切换到Git很多年了,现在几乎所有的项目都在使用Github管理, 本篇文章讲一下为什么使用Git, 以及如何在团队中正确使用. Git的优点 Git的优点很多,但是这里只列出我认为 ...

  3. Git与Repo入门

    版本控制 版本控制是什么已不用在说了,就是记录我们对文件.目录或工程等的修改历史,方便查看更改历史,备份以便恢复以前的版本,多人协作... 一.原始版本控制 最原始的版本控制是纯手工的版本控制:修改文 ...

  4. Git Bash的一些命令和配置

    查看git版本号: git --version 如果是第一次使用Git,你需要设置署名和邮箱: $ git config --global user.name "用户名" $ gi ...

  5. 在Ubuntu 16.10 安装 git 并上传代码至 git.oschina.net

    1. 注册一个账号和创建项目 先在git.oschina.net上注册一个账号和新建一个project ,如project name 是"myTest". 2.安装git sudo ...

  6. 史上最详细git教程

    题外话 虽然这个标题很惊悚,不过还是把你骗进来了,哈哈-各位看官不要着急,耐心往下看 Git是什么 Git是目前世界上最先进的分布式版本控制系统. SVN与Git的最主要的区别 SVN是集中式版本控制 ...

  7. [版本控制之道] Git 常用的命令总结(欢迎收藏备用)

    坚持每天学习,坚持每天复习,技术永远学不完,自己永远要前进 总结日常开发生产中常用的Git版本控制命令 ------------------------------main-------------- ...

  8. 【解决方案】Myeclipse 10 安装 GIT 插件 集成 步骤 图解

    工程开发中,往往要使用到集成GIT ,那么下面说说插件安装步骤 PS:以Myeclipse 10 为例,讲解集成安装步骤. ----------------------main------------ ...

  9. git 命令

    切换仓库地址: git remote set-url origin xxx.git切换分支:git checkout name撤销修改:git checkout -- file删除文件:git rm  ...

  10. git亲测命令

    一.Git新建本地分支与远程分支关联问题 git checkout -b branch_name origin/branch_name 或者 git branch --set-upstream bra ...

随机推荐

  1. CCNA2.0笔记_WAN技术-专线

    WAN拓扑 Routers.CSU/DSU.WAN switches.Core routers.Modems 使用 数据链路层协议(二层) 来建立对端连接 WAN的三种连接方式 广域网链路类型: ·V ...

  2. sql命令大全

    1.连接Mysql 格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root ...

  3. 利用RPM和YUM安装软件

    安装软件事root的事,所以必须要以root身份登录! 假设我要安装一个文件名为rp-pppoe-3.5-32.1.i386.rpm的文件, 那么我们可以这样: rpm安装软件 rpm -ivh pa ...

  4. windows7 mongodb 安装急遇到的问题

    偶尔上一次博客园,才发现自己这么久没有写东西了.今天更新一篇. 作为前端开发者,node.js 无非是一个强心剂.有了node.js 后端开发变得不需要再搞另一门语言,一个javascript 就能搞 ...

  5. Zookeeper的结构和命令

    1. Zookeeper的特性 1.Zookeeper:一个leader,多个follower组成的集群. 2.全局数据一致:每个server保存一份相同的数据副本,client无论连接到哪个serv ...

  6. 爬虫 (3)- lxml库和贴吧图片下载案例

    lxml库 lxml 是 一个HTML/XML的解析器,主要的功能是如何解析和提取 HTML/XML 数据. lxml和正则一样,也是用 C 实现的,是一款高性能的 Python HTML/XML 解 ...

  7. dom4j api 详解

    1.DOM4J简介 DOM4J是 dom4j.org 出品的一个开源 XML 解析包.DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP. DOM4J ...

  8. 05 Java图形化界面设计——布局管理器之GridLayout(网格布局)

    网格布局特点: l  使容器中的各组件呈M行×N列的网格状分布. l  网格每列宽度相同,等于容器的宽度除以网格的列数. l  网格每行高度相同,等于容器的高度除以网格的行数. l  各组件的排列方式 ...

  9. redux sample with slim redux source code

    code sample没有package.json文件,也就没有任何外部依赖,直接使用slim redux source code. slim resux只有90多行. nodejs对es6的impo ...

  10. 嵌入式驱动开发之spi---spi串口通信调试

    一. 概念 SPI是 Serial Peripheral Interface(串型外部接口)的缩写.SPI接口有4根PIN脚,分别是:          * SPICLK     : 用于传输数据的同 ...