版本控制工具

  • 集中式:

    • 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. java keytool证书工具使用小结(转)

    Keytool 是一个Java数据证书的管理工具 ,Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里,包含两种数据:密钥实体(K ...

  2. 解决:eclipse 断点调试进入到class文件,无法查看变量值问题

    今天团队一小伙伴调试项目时,一不小心选错了源文件目录(maven分模块项目),选到了顶层父项目下的文件,结果调试时发现无法查看调试过程中的变量值,要解决这个问题,其实很简单,稍稍配置一下就可以了,为了 ...

  3. AC日记——[HNOI2012]永无乡 bzoj 2733

    2733 思路: 启发式合并splay(n*log^2n): 来,上代码: #include <cstdio> #include <cstring> #include < ...

  4. 学习PHP注意事项

    1 多阅读手册和源代码 没什么比阅读手册更值得强调的事了–仅仅通过阅读手册你就可以学习到很多东西,特别是很多有关于字符串和数组的函数.就在这些函数里面包括许多有用的功能,如果你仔细阅读手册,你会经常发 ...

  5. 解决win10下微信开发者工具点击错位问题

    在系统设置->显示->更改文本.应用等项目的大小选项中将百分比改为100%即可.

  6. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 B题 跳一跳,很简单的(字符串Hash + 树上路径倍增)

    题目链接  2018广东工业大学校赛  Problem B 考虑到每条边的权值变化$26$个时刻之后一定会回到原来的状态. 那么预处理出前$26$个时刻每棵树的形态,对每棵树做一遍字符串哈希. 查询的 ...

  7. Python的扩展接口[2] -> 动态链接库DLL[1] -> 组件对象模型 COM 的 Python 调用

    组件对象模型 COM 的 Python 调用 关于COM的基本概念,可参考组件对象模型 COM的内容,下面主要介绍两种使用 Python 调用 COM 组件的方法. 1 使用 win32com 1.1 ...

  8. 动态读取cron表达式

    项目中在使用任务调度时往往会用到cron表达式,比如每五分钟执行一次,每天12点执行一次,每周四凌晨1点执行一次等.但是如果将cron表达式写死,往往不利于测试.解决方案:我们可以将cron表达式写入 ...

  9. 你也许还不知道const_cast,static_cast,dynamic_cast,reinterpret_cast的区别吧?

    [QQ群: 189191838,对算法和C++感兴趣可以进来]       开篇立意: C++中各种转换令人眼花缭乱,看似差不多,实际差很多,而且在当今时间,做一个"差不多先生"其 ...

  10. 五. 面向对象高级特性6. Java 泛型

    我们知道,使用变量之前要定义,定义一个变量时必须要指明它的数据类型,什么样的数据类型赋给什么样的值. 假如我们现在要定义一个类来表示坐标,要求坐标的数据类型可以是整数.小数和字符串,例如: x = 1 ...