OK,先附上教程——廖雪峰的官方网站

友情连接:git官网


简介

这里我只想引用他的原文:

Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的:

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

Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。


安装

下载(win10)安装,一路next,大概?这并不十分重要。(其他系统点这里下载

配置一下用户信息:

git  config --global user.email "you@example.com"
git config --global user.name "your name"

本地命令

  • 创建版本库(respository):git init 将管理该目录下的文件
  • 添加文件:git add <file>
  • 提交修改:git commit -m "messages"
  • 查看状态:git status add之前和add后查看状态得到的信息不一样
  • 比较内容:git diff 当前修改的内容,或者比较两个提交
  • 提交日志:git log 或者git log --pretty=oneline
  • 版本信息:HEADHEAD^HEAD~2 (到这里突然想到有一个是否大小写敏感的问题,默认不敏感)
  • 版本回退:git reset --hard HEAD^
  • 查看内容:cat <file>
  • 命令记录:git reflog
  • 放弃修改:git checkout -- <file> 取消该文件未进入版本库的变动,原理为用版本库的文件替换工作区的文件
  • 放弃添加:git reset HEAD <file> 取消git add <file> 操作,接下来可以在修改添加提交,或者checkout掉

远程仓库

  • 创建SSH Key:ssh-keygen -t rsa -C "youremail@example.com"
  • 添加远程仓库:git remote add origin <respository>
  • 本地推送到远程:git push -u origin master 由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。之后应该使用git push origin master ,推送其他分支修改master参数
  • 克隆远程仓库:git clone <respository> 注意文件结构,克隆后,git管理的并不是当前文件夹,而是你克隆的那个项目所表示的子文件夹
  • 查看远程库的信息:git remote 详细信息:git remote -v
  • 创建远程的分支:git checkout -b dev origin/dev
  • 抓取远程库:git pullgit branch --set-upstream dev origin/dev 指定本地分支与远程分支的连接

    但是,并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?

    master分支是主分支,因此要时刻与远程同步;

    dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;

    bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;

    feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

    总之,就是在Git中,分支完全可以在本地自己藏着玩,是否推送,视你的心情而定!


分支管理

  • 创建分支:git checkout -b dev 相当于git branch dev (新建分支)+git checkout dev (切换分支)
  • 查看分支:git branch
  • 合并分支:git merge dev 合并dev到当前分支,fast-forward,快速合并,只是移动了master指针
  • 删除分支:git branch -d dev
  • 查看合并:git log --graph --pretty=oneline --abbrev-commit 感觉这个超级厉害,git log --graph 可以看到分支合并图,--abbrev-commit 可以看到简略的id号(自己测试的)
  • 非快合并:git merge --no-ff -m "messages" dev 由于禁用了快速合并,就会新建一个提交,所以需要-m参数
  • 缓存工作区:git stash
  • 缓存列表:git stash llist
  • 缓存恢复:git stash apply 或者指定git stash apply stash@{0}
  • 缓存删除:git stash drop
  • 缓存出栈:git stash pop
  • 强制删除:git branch -D dev 强制删除未合并的分支时使用

    分支策略:

    在实际开发中,我们应该按照几个基本原则进行分支管理:

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

所以,团队合作的分支看起来就像这样:


标签管理

  • 新建标签:git tag <name>,-a指定标签名,-m指定说明文字
  • 查看标签:git tag
  • 补打标签:git tag <name> <commit id>
  • 标签信息:git show <tag>
  • 删除标签:git tag -d <tag>
  • 推送标签:git push origin <tag>git push origin --tags (推送全部标签)
  • 远程删除:git push origin :refs/tags/<tagname> ,先删除本地,再执行删除远程

设置别名

  • git config --global alias.st status
  • git config --global alias.unstage 'reset HEAD'
  • git config --global alias.last 'log -1'
  • 霸气登场: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 config --global alias.lg "log --color --graph --pretty=oneline --abbrev-commit"

we’re done!

git学习笔记——廖雪峰git教程的更多相关文章

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

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

  2. 【学习总结】Git学习-参考廖雪峰老师教程四-时光机穿梭

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

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

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

  4. 【学习总结】Git学习-参考廖雪峰老师教程三-创建版本库

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

  5. 【学习总结】Git学习-参考廖雪峰老师教程五-远程仓库

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

  6. 【学习总结】Git学习-参考廖雪峰老师教程八-使用GitHub

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

  7. 【学习总结】Git学习-参考廖雪峰老师教程九-使用码云

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

  8. 【学习总结】Git学习-参考廖雪峰老师教程二-安装Git

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

  9. 【学习总结】Git学习-参考廖雪峰老师教程七-标签管理

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

随机推荐

  1. kafka的Java客户端示例代码(kafka_2.12-0.10.2.1)

    使用0.9开始增加的KafkaProducer和KafkaConsumer. Pom.xml <project xmlns="http://maven.apache.org/POM/4 ...

  2. css实现不定高度的元素垂直居中问题

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  3. Excel中concatenate函数的使用方法

    你还在为Excel中concatenate函数的使用方法而苦恼吗,今天小编教你Excel中concatenate函数的使用方法,让你告别Excel中concatenate函数的使用方法的烦恼. 经验主 ...

  4. PCB (4)原理图导入PCB

    1导入原理图 打开原理图 之后出现对话框,检查错误,选择更新 2 自动对齐 2布线 手动布线 半自动布线 自动布线 输出

  5. mysql函数之截取字符串

    文章摘取自http://www.cnblogs.com/zdz8207/p/3765073.html 练习截取字符串函数(五个) mysql索引从1开始 一.mysql截取字符串函数 1.left(s ...

  6. webpack4+express+mongodb+vue 实现增删改查

    在讲解之前,我们先来看看效果如下所示: 1)整个页面的效果如下: 2) 新增数据效果如下: 3) 新增成功如下: 4) 编辑数据效果如下: 5) 编辑成功效果如下: 6) 删除数据效果如下: 7) 删 ...

  7. nodeJS---URL相关模块用法(url和querystring)

    nodeJS---URL相关模块用法(url和querystring) 一: URL模块: URL模块用于解析和处理URL的字符串,提供了如下三个方法: 1. parse 2. format 3. r ...

  8. ES6中Object.assign() 方法

    ES6中Object.assign() 方法 1. 对象合并Object.assign 方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象上.如下代码演示: var targ ...

  9. Qt之创建并使用静态链接库

    1.创建静态链接库 静态库的工程名字 添加包含的模型 更改一下类的名字 我的静态编译库的工程. 写一个简单的静态哭的代码为后面测试静态库使用 cpp代码: #include "staticb ...

  10. Android在代码中设置控件的drawableLeft,drawableRight,drawableTop,drawableBottom。

    根据业务的需要,要在代码中设置控件的drawableLeft,drawableRight,drawableTop,drawableBottom属性. 我们知道在xml中设置的方法为:android:d ...