本文基本的參考文章链接例如以下所看到的:

简单介绍与说明

Git是一个分布式版本号管理系统,是为了更好地管理Linux内核开发而创立的。Git能够在不论什么时间点,把文档的状态作为更新记录保存起来。

因此能够把编辑过的文档复原到曾经的状态,也能够显示编辑前后的内容差异。

Git与SVN的差别

SVN是集中式版本号控制系统。版本号库是集中放在中央server的。而工作的时候,用的都是自己的电脑,所以首先要从中央server那里得到最新的版本号。工作完毕后,须要把自己做完的活推送到中央server。集中式版本号控制系统是必须联网才干工作。假设在局域网还能够。带宽够大,速度够快;假设在互联网。网速慢的话就比較恼火。

Git是分布式版本号控制系统。那么它就没有中央server的,每一个人的电脑就是一个完整的版本号库。这种话工作的时候就不须要联网,由于版本号都是在自己的电脑上。

既然每一个人的电脑都有一个完整的版本号库,那多个人怎样协作呢?比方说自己在电脑上改了文件A,其它人也在电脑上改了文件A,这时你们两之间仅仅需把各自的改动推送给对方,就能够互相看到对方的改动。

Win7环境下安装与配置

联网到Git官网下载页面下载Git安装包,然后双击安装。

【開始】菜单->【全部程序】->【Git】->【Git Bash】,会弹出例如以下操作界面:

Git的设置信息被存放在用户本地文件夹的.gitconfig文档里。

尽管能够直接编辑配置文件。但在这里我们使用config命令。

  • Git是分布式版本号控制系统,所以须要填写username和邮箱作为一个标识。

    git config --global user.name "<username>"
    git config --global user.email "<电子邮件>"

    --global 參数表示这台机器上全部的Git仓库都会使用这个配置,当然也能够对某个仓库指定的不同的username和邮箱。

  • 能够为Git命令设定别名(如把「checkout」缩略为「co」,然后就使用「co」来执行命令)

    git config --global alias.co checkout
  • 假设在Windows使用命令行(Git Bash), 含非ASCII字符的文件名称不能正常显示。

    git config --global core.quotepath off
  • 让Git以彩色显示。

    git config --global color.ui auto

本地仓库操作

创建版本号库

版本号库(又名仓库,英文名repository)。能够简单的理解为一个文件夹,这个文件夹里面的全部文件都能够被Git管理起来,每一个文件的改动、删除等,Git都能跟踪,以便不论什么时刻都能够追踪历史,或者在将来某个时刻还能够将文件还原。

  • 在某路径下新建版本号库所需的文件夹,然后通过cd 命令转到该新建文件夹(演示样例文件夹为E:\git_test)
  • 执行Git初始化命令,能够把这个文件夹变成Git能够管理的仓库。

    git init
  • 此时git_test文件夹下会多出.git的文件夹。这个文件夹是Git用来跟踪管理版本号的,没事千万不要手动乱改这个文件夹里面的文件

    ls -a

加入文件到版本号库

  • 在版本号库git_test文件夹下新建一个名为「readme.txt」的文件。写入“111111”作为文件内容。
  • 使用命令 git add <文件名称> 将文件加入到暂存区(索引区)。

    使用空格切割能够指定多个文件。使用点号 . 能够指定全部文件。

  • 使用命令 git commit -m <文件名称> 告诉Git,把全部改动提交到本地的版本号库。

  • 通过命令 git status 来查看是否还有文件未提交。

  • 改动「readme.txt」文件的内容(如加入一行“222222”内容)。

  • 再次通过命令 git status 来查看是否还有文件未提交。

  • 使用命令 git diff <文件名称> 查看「readme.txt」文件究竟改了什么内容。

    能够看出「readme.txt」文件的内容加入了一行“222222”的内容。

  • 知道对「readme.txt」文件做了什么样的改动后。就能够放心的提交到仓库。提交改动和提交文件是同样的操作。

  • 使用 git log 命令,能够查看仓库的操作记录。

版本号回退

  • 再次改动「readme.txt」文件的内容(如加入一行“333333”内容)。
  • 提交这次的改动。

  • 使用命令 git log 或者 git log --pretty=oneline 查看仓库的操作记录。

  • 假设想要回退到前两个版本号。使用 git reset --hard HEAD~2 命令。

  • 再次查看日志记录。此时已经没有后两次操作的记录。

  • 假设又想回退到最新的版本号。使用命令 git reflog 查看全部的操作记录。

  • 使用命令 git reset --hard <版本号号> 回退到仓库的指定版本号。

撤销改动

  • 再次改动「readme.txt」文件的内容(如加入一行“444444”内容)。
  • 在未提交之前,假设发现加入444444内容有误,所以得立即恢复曾经的版本号,如今能够有例如以下几种方法:

    • 假设知道须要删掉哪些内容的话,直接手动更改去掉那些内容,然后add加入到暂存区,最后commit提交。
    • 能够按前述的方法直接恢复到某个版本号。
  • 假设不想使用上面的两种方法,而想直接想使用撤销命令该怎样操作呢?首先查看状态。



    能够发现。Git会告诉你 git checkout --<文件名称> 能够撤销工作区的改动。

  • 命令 git checkout --<文件名称> 的意思就是把文件在工作区做的改动全部撤销( -- 非常重要,假设没有的话。那么该命令就是创建分支)。这有2种情况:

    • 文件被改动后,还没有放到暂存区(即没有使用 git add 命令)。使用撤销改动就回到和版本号库一模一样的状态。

    • 文件已经放入暂存区,接着又作了改动,撤销改动就仅仅是回到加入到暂存区后的状态。

删除文件

  • 新建名为「new_one.txt」的文件。然后提交。
  • 手动删除名为「new_one.txt」的文件,然后查看查看的状态。

  • 使用命令 git rm <文件名称> 将文件从暂存区删除。

  • 使用命令 git commit -m * 提交操作。

远程仓库操作

获取远程仓库

假设想对某个开源项目出份力,能够先把该项目的Git仓库复制出来,这就须要用到 git clone 命令。

  • 转到某个用于存放项目的文件夹(如E:\)。
  • 使用命令 git clone <url> [自己定义项目名称] 克隆远程仓库。

  • 转到克隆所得的仓库文件夹。使用命令 git remote -v 查看当前配置有哪些远程仓库。

从远程仓库拉取数据

  • 使用命令 git fetch <remote-name> 从远程仓库拉取数据到本地。

    此命令会到远程仓库中拉取全部本地仓库中还没有的数据。

    执行完毕后。就能够在本地訪问该远程仓库中的全部分支。

    假设是克隆了一个仓库,此命令会自己主动将远程仓库归于 origin 名下,所以 git fetch origin 会抓取从你上次克隆以来(或是上次fetch以来)别人上传到此远程仓库中的全部更新。须要记住,fetch命令仅仅是将远端的数据拉到本地仓库,并不自己主动合并到当前工作分支,仅仅有当你确实准备好,才干手工合并。

  • 使用命令 git pull 从远程仓库拉取数据到本地。

    假设设置了某个分支用于跟踪某个远端仓库的分支,能够使用 git pull 命令自己主动拉取数据下来,然后将远端分支自己主动合并到本地仓库中的当前分支。日常工作中常常这么用,既快且好。

    实际上。默认情况下 git clone 命令本质上就是自己主动创建本地的master分支用于跟踪远程仓库中的master分支(假设远程仓库确实有master分支),所以一般我们执行 git pull。目的都是要从原始克隆的远端仓库中拉取数据后。合并到工作文件夹中的当前分支。

推送数据到远程仓库

项目进行到某个阶段,要同别人分享眼下的成果,能够将本地仓库中的数据推送到远程仓库。

使用 git push <remote-name> <branch-name> 能够实现推送功能,假设要把本地的master分支推送到origin远程仓库(克隆操作会自己主动使用默认的master和origin名字)。

git push origin master

仅仅有拥有所克隆的server上的写权限,或者同一时刻没有其它人在推数据,这条命令才会如期完毕任务。假设在你推数据前,已经有其它人推送了若干更新,那你的推送操作就会被驳回。

你必须先把他们的更新拉取到本地,合并到自己的项目中。然后才干够再次推送。

查看远程仓库信息

使用命令 git remote show <remote-name> 查看某个远程仓库的具体信息(比方要看所克隆的origin仓库),会给出很多默认信息。

远程仓库的删除和重命名

使用 git remote rename * 命令改动某个远程仓库在本地的简称。

对远程仓库的重命名,也会使相应的分支名称发生变化(比如原来的origin/master分支如今变成myori/master分支)。

碰到远端仓库server迁移,或者原来的克隆镜像不再使用,又或者某个參与者不再贡献代码,那么须要移除相应的远端仓库。

使用 git remote rm <remote-name> 命令移除相应的远端仓库。

Git使用笔记01的更多相关文章

  1. Git学习笔记与IntelliJ IDEA整合

    Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...

  2. 软件测试之loadrunner学习笔记-01事务

    loadrunner学习笔记-01事务<转载至网络> 事务又称为Transaction,事务是一个点为了衡量某个action的性能,需要在开始和结束位置插入一个范围,定义这样一个事务. 作 ...

  3. 《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!

    <30天自制操作系统>笔记(01)——hello bitzhuwei's OS! 最初的OS代码 ; hello-os ; TAB=4 ORG 0x7c00 ; 指明程序的装载地址 ; 以 ...

  4. Git学习笔记(10)——搭建Git服务器

    本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...

  5. Git学习笔记(四)

    一.忽略特殊文件 在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件. 不需要从头写.gitignore文件,GitHub已经为我们 ...

  6. 《The Linux Command Line》 读书笔记01 基本命令介绍

    <The Linux Command Line> 读书笔记01 基本命令介绍 1. What is the Shell? The Shell is a program that takes ...

  7. git 学习笔记6--remote & log

    git 学习笔记6--remote & log 创建SSH Keys ssh-keygen -t rsa -C "1050244110@qq.com" 本地关联远程 git ...

  8. 《Pro Git》笔记3:分支基本操作

    <Pro Git>笔记3:Git分支基本操作 分支使多线开发和合并非常容易.Git的分支就是一个指向提交对象的可变指针,极其轻量.Git的默认分支为master. 1.Git数据存储结构和 ...

  9. PHP 学习笔记 01

    例子: 为什么要学PHP 主观原因: 前段时间在学校处理了毕业的一些事情,回到上海后开始了找工作的旅程.意向工作是WPF开发或者ASP.NET 作为后端的WEB开发. 陆陆续续一直在面试,其中有一家公 ...

随机推荐

  1. python week08 并发编程之多进程--实践部分

    一 multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程.P ...

  2. java EE技术体系——CLF平台API开发注意事项(4)——API生命周期治理简单说明

    文档说明 截止日期:20170905,作者:何红霞,联系方式:QQ1028335395.邮箱:hehongxia626@163.com 综述 有幸加入到javaEE技术体系的研究与开发,也得益于大家的 ...

  3. ansible /usr/bin/python: not found

    使用ansible命令的时候出错 ansible all -m ping 出现报错 192.168.199.154 | FAILED! => { "changed": fal ...

  4. git如何忽略文件或者文件夹

    用git开发中会有一些不愿意提交的目录或者文件 在仓库目录下新建一个名为.gitignore的文件(因为是点开头,没有文件名,没办法直接在windows目录下直接创建,必须通过右键Git Bash,按 ...

  5. 【bzoj4080】[Wf2014]Sensor Network 随机化

    题目描述 魔法炮来到了帝都,除了吃特色菜之外,还准备去尝一尝著名的北京烤鸭.帝都一共有n(1<=1<=100)个烤鸭店,可以看成是二维平面内的点.不过由于魔法炮在吃烤鸭之前没有带钱,所以吃 ...

  6. [LOJ#522]「LibreOJ β Round #3」绯色 IOI(危机)

    [LOJ#522]「LibreOJ β Round #3」绯色 IOI(危机) 试题描述 IOI 的比赛开始了.Jsp 和 Rlc 坐在一个角落,这时他们听到了一个异样的声音 …… 接着他们发现自己收 ...

  7. 关于sql语句实现将'1,2,3'转1,2,3等竖横转换问题

    这是本人的第一个博客,以后会及时整理遇到的问题,方便和大家进行交流. 第一次也不知道说什么了,直接进入正题吧. 因为我的数据在设计时候数据源是竖列存的,满足条件的数据是横列存的.如下图所示: 我要筛选 ...

  8. vue学习:解决Apycharm的 * is only available in ES6(use 'esversion: 6') 问题

    使用pycharm打开main.js,代码前出现黄点,js报错了 把鼠标移至import的波浪线上,出现提示:W119 - ‘import’  is only available in ES6(use ...

  9. eclipse中maven项目交付svn忽略配置文件

    eclipse与maven插件的结合为我们快速搭建开发环境提供了便捷条件,然而maven编译出来的class文件.配置文件和打包文件实际上都不需要进行版本控制,团队中每个人的开发环境可能不太一样,将. ...

  10. jrebel 激活

    jrebel idea插件激活,亲测可用: 在jrebel server处,写上: http://139.199.89.239:1008/88414687-3b91-4286-89ba-2dc813b ...