版本控制工具

  • 集中式:

    • CVS
    • SVN 集大成者
  • 分布式:git

    • 创始人:inux Towards 2005年

工具

  • 最好使用linux(oh-my-zsh)
  • gitbash -> cygwin
  • git service :gitolite

工作区 --> 暂存区 --> 服务器

基本命令:

#当前仓库配置文件路径:.git/config
#当前用户配置文件路径:当前用户主目录下隐藏的 .gitconfig
#配置全局用户名、邮箱, global是作用于当前用户的,不加则只作用于当前仓库,
$ git config --global user.name "mbq"
$ git config --global user.email "mbq6060@qq.com"
#配置全局显示颜色
$ git config --global color.ui tru
#为命令配置别名alias.<别名>
$ git config --global alias.st status
#配置全局日志输出样式别名
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

#初始化git仓库
$ git init

#添加文件到版本库
$ git add <file>
#添加当前目录下的所有文件
$ git add .
#提交版本
$ git commit -m "提交描述"
#查看仓库状态
$ git status
#查看git版本区别
$ git diff
#删除文件
git rm <file>

#历史日志
#查看提交历史纪录,倒序排列,数字表示查看最后几次提交历史
$ git log [1]
#简化为一行展示
$ git log --pretty=oneline
#查看自己的历史操作(可以回退到这些版本)
$ git reflog

#回退到上一个版本,也可使用HEAD~100
$ git reset --hard HEAD^ <file>
#回退到指定版本号,--和hard间没有空格
$ git reset --hard 116f748
--soft 表示仍然保留当前工作区的更改

#撤销工作区的更改(还未进行 add 操作)
$ git checkout -- readme.txt
$ git checkout [commit-number] --readme.txt 将此文件退到指定版本

#分支管理
#创建并切换分支dev
$ git checkout -b dev
#相当于以下两条命令
$ git branch dev
$ git checkout dev (切换到之前的版本则会进入到一个游离分支状态(分离的头指针),git merge 可以合并回来)
#查看当前分支
$ git branch
#合并分支(Fast Forward)
$ git merge dev
#删除分支
$ git branch -d dev
#以普通模式合并分支,能从历史中看出来,而fast forward合并方式看不出来
$ git merge --no-ff -m "merge with noff" dev
#图形化展示分支及合并情况
$ git log --graph --pretty=oneline --abbrev-commit

#储藏当前工作空间
$ git stash
#查看储存的工作空间
$ git stash list

#恢复并删除储存的工作空间
$ git stash pop
#相当于以下两条命令
$ git stash apply
$ git stash drop

#创建SSH Key
$ ssh-keygen -t rsa -C "mbq6060@qq.com"

#查看远程仓库信息
$ git remote -v
#连接到远程仓库
$ git remote add origin git@github.com:mabaoqing/learngit.git

#基本(常用)操作
#克隆仓库
$ git clone git@github.com:mabaoqing/learngit.git
#从远程获取最新仓库
$ git pull
#推送到远程仓库,-u只在第一次推送时使用,将仓库推送并关联两端master分支
$ git push -u origin master
#创建远程分支到本地
$ git checkout -b dev origin/dev
#将本地dev分支和远程分支进行关联
$ git branch --set-upstream-to=origin/dev dev

#标签
#为某次提交打标签,确定一个版本
$ git tag v1.0 [版本号]

# 创建带有说明的标签
$ git tag -a v1.0 -m 'version 1.0 releasd' [版本号]
#查看标签状态
$ git show <tagname>
# 删除标签
$ git tag -d <tagname>
# 推送标签到远程
$ git push origin <tagname>
# 推送多个标签
$ git push origin --tags
# 删除远端标签
$ git tag -d <tagname>
$ git push origin :refs/tags/<tagname>

#忽略文件。创建.gitignore文件配置需要忽略的文件,在编辑器中另存为才行,不能直接创建
#强制添加忽略的文件
$ git add -f <file>
#检查.gitignore文件中的配置规则与文件匹配
$ git check-ignore -v <file>

Git学习小结的更多相关文章

  1. Git学习小结 ~ Lethe's Blog

    学习自https://www.liaoxuefeng.com/wiki/896043488029600 一.创建版本库 (1) git init 初始化一个Git仓库 (2)添加文件到Git仓库,分两 ...

  2. Git学习小结(第三次作业)

    本文主要总结一下在学习和使用git中一些用到的命令. 参考教程:廖雪峰git教程 在windows上安装git 下载使用环境:http://msysgit.github.io/, 安装一路默认即可. ...

  3. git学习小结 (笔记)

    Modesty helps one to go forward, whereas conceit makes one lag behind. "虚心使人进步,骄傲使人落后" 注:本 ...

  4. 【学习总结】Git学习-参考廖雪峰老师教程-总

    公元2018-10-21 实验室台式机 win7 64位 参考教程: 廖雪峰Git教程 其他资料:Git-book 北大一只总结的笔记,最终整理的时候可以参考:Git笔记 评论区看到的另一个人,总结在 ...

  5. 【学习总结】Git学习-参考廖雪峰老师教程六-分支管理

    学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...

  6. Git 学习(三)本地仓库操作——git add & commit

    Git 学习(三)本地仓库操作——git add & commit Git 和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念.这在上文已有提及,本文具体说明什么是工作区及暂存区,以及 ...

  7. Git学习笔记(二) · 非典型性程序猿

    远程库的使用 前面说到的都是git在本地的操作,那么实际协作开发过程中我们肯定是要有一个远程版本库作为项目的核心版本库,也就是投入生产使用的版本.这里我们以 Github为例.Github是一个开放的 ...

  8. House_of_orange 学习小结

    House_of_orange学习小结 house_of_orange最早出现在2016年hitcon的一道同名题目,其利用效果,是当程序没有free函数的时候,我们可以通过一些方法,来让chunk被 ...

  9. Git 学习看这篇就够了!

    Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. 可能新手会问"git和github有什么关系啊?" git是一个版本控制工具: githu ...

随机推荐

  1. 给Input type='date'赋值

    (如有错敬请指点,以下是我工作中遇到并且解决的问题) 需要使用AngularJS动态给<input type="date" />赋值. 我使用的是ng-bind=&qu ...

  2. SpringBoot部署到Linux服务器

    今天来谈一下,用SpringBoot写的Demo来配置到Linux服务器. 这里,我用阿里云服务器作为实例,SpringBoot集成了SpringMvC+ mybatis 框架,用maven管理jar ...

  3. 使用log4j2分离系统日志与业务日志

    前一篇文章介绍了log4j2 扩展日志级别,支持将系统日志与业务处理日志拆分,现在介绍一下通过日志级别将系统日志与业务日志分类,要达到这个目的很容易,只需要配置一下log4j的xml文件: <? ...

  4. Apache优化建议

    Apache是Web服务器软件,它最常见是搭配PHP开发语言去使用.今天,小编根据Apache官方手册再结合实际,整理出下面这些优化建议,希望对大家的Apache服务器的运行效率有效果. 1.控制Ma ...

  5. Codeforces Round #325 (Div. 2) Alena's Schedule 模拟

    原题链接:http://codeforces.com/contest/586/problem/A 题意: 大概就是给你个序列..瞎比让你统计统计什么长度 题解: 就瞎比搞搞就好 代码: #includ ...

  6. Sort Transformed Array -- LeetCode

    Given a sorted array of integers nums and integer values a, b and c. Apply a function of the form f( ...

  7. 四. Java继承和多态8.Java final关键字:阻止继承和多态

    在 Java 中,声明类.变量和方法时,可使用关键字 final 来修饰.final 所修饰的数据具有“终态”的特征,表示“最终的”意思.具体规定如下: final 修饰的类不能被继承. final ...

  8. 粗谈CDN

    CDN:内容分发网络(content delivery network) 1.DNS解析到最快(有可能是地理上最近,也有可能是地理上远但是链路最好)的CDN缓存设备 2.从CDN获取已经缓存的资源 3 ...

  9. Ubuntu14.041+VMware12.0NET方式网卡连接虚拟机联网问题解决方法

    进入命令:vi /etc/network/interfaces 修改成上图所示: 网络连接方式设置为NET方式: 重启网卡:顺序执行 ifdown eth0 ifup eth0 完成网卡的重启: 使用 ...

  10. MIT算法导论笔记

    详细MIT算法导论笔记 (网络链接) 第一讲:课程简介及算法分析 (Sheridan) 第二讲:渐近符号.递归及解法  (Sheridan) 第三讲:分治法(1)(Sheridan) 第四讲:快排及随 ...