git使用手册:https://git-scm.com/book/zh/v1/

一、分支

  1、查看所有本地分支

    git branch

  2、查看所有本地分支和远程分支

    git branch -a

  3、查看本地分支和远程分支的对应关系

    git branch -vv

  4、查看远程分支对应远程库路径

   git remote -v

  5、创建/删除本地分支

    git branch local-name 以当前分支为基础创建名为local-name的本地分支

    git checkout -b local-name 以当前分支为基础创建本地分支local-name并切换到该分支

    git branch -d 如果有未合并的提交,不会删除

    git branch -D 强制删除,如果有未合并的提交也删除

  6、设置本地分支与远程分支的追踪关系

   git branch --set-upstream-to=远程库名/分支名

  7、以远程库为基础创建本地分支

    git checkout -b localbranch remotebranch 创建本地分支,以remotebranch为开始。同时也建立了本地分支和远程分支的关系。

    该方法与5相比更加方便,因为5是以当前分支为基础创建新分支,而远程分支是其他分支,则容易冲突。

    git checkout --track origin/master 创建名为master的本地分支,追踪origin/master。不能指定本地分支名称。

  8、增加远程库

    git remote add  local-name url 添加远程库url,并且在本地用local-name来指代它

  9、将本地分支提交到远程仓库作为一个新的远程分支

    git push [远程名] [本地分支]:[远程分支] 把本地分支推送到远程库,名为“远程分支”
    git push origin localbranch 把localbranch推送到origin远程库,在远程库里面,该分支名为 localbranch

    git push origin :remotebranch删除远程分支remotebranch

10、切换分支

git checkout local-branch

二、日志

  1、查看当前分支的log

    git log

  2、查看指定分支的log

    git log banch

  3、查看提交内容差异

    git log -p -2 

    -p 选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新

  4、查看提交的简单统计

    git log --stat

     --stat,仅显示简要的增改行数统计

  5、其他用法

    git log --oneline 把提交信息在一行显示,通常在提交很多时方便

    git log --pretty= 可以按照指定格式显示日志信息

    git log --graph= 显示 ASCII 图形表示的分支合并历史

    gitk命令使用gitk图形化工具显示log(linux和windows下都可以用)

三、标签

  1、git分支和标签的区别:标签主要适用于发布,更像一个里程碑式;分支主要是向前进行。

  2、标签是打在一次提交上面,与commit-id挂钩

  3、标签有两种:轻量级的(lightweight)和含附注的(annotated)。轻量级标签就像是个不会变化的分支,实际上它就是个指向特定提交对象的引用。

    而含附注标签,实际上是存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,电子邮件地址和日期,以及标签说明,

    标签本身也允许使用 GNU Privacy Guard (GPG) 来签署或验证。一般我们都建议使用含附注型的标签,以便保留相关信息;当然,如果只是临

    时性加注标签,或者不需要旁注额外信息,用轻量级标签也没问题。

  4、创建标签

    git tag v1.4 在当前最新提交上面创建tag

    git tag commt-id 在指定commit-id上创建tag

  5、查看所有标签

    git tag

  6、筛选标签

$ git tag -l 'v1.4.2.*'
v1.4.2.
v1.4.2.
v1.4.2.
v1.4.2.

  7、查看对应标签版本信息

    git show v1.4.2.1

  8、推送(分享)标签

    git push origin v1.4.2.1 向远程库origin推送标签 v1.4.2.1

    git push origin --tags 向origin库推送所有本地新增标签

  9、以标签创建分支
    git checkout -b localbranch tag 创建本地分支,以tag为开始。这样就建立了本地分支和tag的关系。

四、分支拉取、推送、合并和变基

  1、拉取

    git pull [remote-name] [branch-name]

    git pull 从默认远程分支拉取;默认远程分支的意思是本地分支追踪的远程分支

    git pull origin master 从指定的origin库和master分支拉取;如果有冲突需要自己解决;

  2、推送

    git push 向默认分支推送

    git push remote-name branch-name向指代远程分支推送

  3、合并分支

    git merge branch 把branch分支合并到当前分支,冲突需要自己解决后提交

   4、变基

    git rebase master 以master分支为基底分支把当前分支的提交重新演绎一遍,从而改变当前分支的提交历史,

    使它成为master的直接下游,也使得分支结构关系更加清晰(从树形变为线性)

  变基前:  

  

  变基后:

  

  这时可以切换到master分支,来一次merge操作,git merge experiment:

  

  然后就可以把experiment分支删除了。这样master的提交历史会比直接merge experiment更清晰。

  git rebase还可以重写提交历史,参考https://git-scm.com/book/zh/v1/Git-%E5%B7%A5%E5%85%B7-%E9%87%8D%E5%86%99%E5%8E%86%E5%8F%B2

  5、抓取数据

    git fetch [remote-name] [branch-name]从远程分支抓取本地仓库没有的数据,但是不会合并到本地分支,只是更新了本地远程仓库的索引。

    如果需要可以自己merge到本地分支。git pull即是git fetch 和 git merge 两步操作。

    FETCH-HEAD:

      1)如果没有显式的指定远程分支, 则远程分支的master将作为默认的FETCH_HEAD

        即git fetch [origin],FETCH_HEAD=origin/master

      2)如果指定了远程分支, 就将这个远程分支作为FETCH_HEAD

        即git fetch origin b1时, FETCH_HEAD=origin/b1

    比如 git fetch origin 那么从远程库origin抓取所有分支数据;

    1)git merge FETCH_HEAD(origin/master) 则把抓取到的origin/master分支数据合并到本地分支;

    2)git log origin/master查看拉取到的该分支log;

    3)git checkout -b newB FETCH_HEAD以origin/master创建新分支newB

参考:

FETCH_HEAD is a short-lived ref, to keep track of what has just been fetched from the remote repository. git pull first invokes git fetch, in normal cases fetching a branch from the remote;

FETCH_HEAD points to the tip of this branch (it stores the SHA1 of the commit, just as branches do). git pull then invokes git merge, merging FETCH_HEAD into the current branch.

The result is exactly what you'd expect: the commit at the tip of the appropriate remote branch is merged into the commit at the tip of your current branch.

This is a bit like doing git fetch without arguments (or git remote update), updating all your remote branches, then running git merge origin/<branch>, but using FETCH_HEAD internally

instead to refer to whatever single ref was fetched, instead of needing to name things.

git使用笔记-基础篇的更多相关文章

  1. 小猪猪C++笔记基础篇(五)表达式、语句

    小猪猪C++笔记基础篇(五) 关键词:表达式.语句 本章的内容比较简单,基本上没有什么理解上的困难,都是知识上的问题.先开始想要不要写呢,本来是不准备写的,但是既然读了书就要做笔记,还是写一写,毕竟还 ...

  2. 小猪猪C++笔记基础篇(六)参数传递、函数重载、函数指针、调试帮助

    小猪猪C++笔记基础篇(六) ————参数传递.函数重载.函数指针.调试帮助 关键词:参数传递.函数重载.函数指针.调试帮助 因为一些事情以及自己的懒惰,大概有一个星期没有继续读书了,已经不行了,赶紧 ...

  3. 小猪猪C++笔记基础篇(四)数组、指针、vector、迭代器

    小猪猪C++笔记基础篇(四) 关键词:数组,Vector. 一.数组与指针 数组相信大家学过C语言或者其他的语言都不陌生,简单的就是同一个变量类型的一组数据.例如:int a[10],意思就是从a开始 ...

  4. Python学习笔记基础篇——总览

    Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...

  5. Git操作(基础篇)

    Git操作(基础篇) Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.Git的读音为/gɪt/.Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常 ...

  6. JavaScript笔记基础篇(二)

    基础篇主要是总结一些工作中遇到的技术问题是如何解决的,应为本人属于刚入行阶段技术并非大神如果笔记中有哪些错误,或者自己的一些想法希望大家多多交流互相学习. 1.ToFixed()函数 今天在做Birt ...

  7. Git命令汇总(基础篇)

    自己用Git有一段时间了,随着项目越来越多,功能分支也随之增加,从简单的基础命令到随心所欲,需要自己不断地去尝试总结,下面来分享一下我的Git使用总结. 本章基础篇主要讲解一些Git代码提交流程和Gi ...

  8. metasploit 渗透测试笔记(基础篇)

    0x00 背景 笔记在kali linux(32bit)环境下完成,涵盖了笔者对于metasploit 框架的认识.理解.学习. 这篇为基础篇,并没有太多技巧性的东西,但还是请大家认真看啦. 如果在阅 ...

  9. Python学习笔记——基础篇【第一周】——变量与赋值、用户交互、条件判断、循环控制、数据类型、文本操作

    目录 Python第一周笔记 1.学习Python目的 2.Python简史介绍 3.Python3特性 4.Hello World程序 5.变量与赋值 6.用户交互 7.条件判断与缩进 8.循环控制 ...

随机推荐

  1. Python中list常用的10个基本方法----list的灰魔法

    ########################list 的常用的10个基本方法################################## list 类 列表# 1 列表的基本格式#2 可以 ...

  2. clojure.spec库入门学习

    此文已由作者张佃鹏授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. clojure是一门动态类型的语言,在类型检查方面并没有c++/java这种静态类型语言好用,所以多个模块之 ...

  3. python---scipy模块

    一  简单介绍 SciPy是基于NumPy开发的高级模块,它提供了许多数学算法和函数的实现,用于解决科学计算中的一些标准问题.例如数值积分和微分方程求解,扩展的矩阵计算,最优化,概率分布和统计函数,甚 ...

  4. 容器编排之Kubernetes1.10.2安装与配置

    k8s 1.10.2 https搭建文档 1.下载k8s镜像 方式一:docker hub + github,需要创建一个docker hub账户,连接指定的github账户,docker hub会从 ...

  5. loj #2143. 「SHOI2017」组合数问题

    #2143. 「SHOI2017」组合数问题   题目描述 组合数 Cnm\mathrm{C}_n^mC​n​m​​ 表示的是从 nnn 个互不相同的物品中选出 mmm 个物品的方案数.举个例子, 从 ...

  6. Mysql INNER JOIN

    1.MySQL INNER JOIN子句将一个表中的行与其他表中的行进行匹配,并允许从两个表中查询包含列的行记录. 2.INNER JOIN子句是SELECT语句的可选部分,它出现在FROM子句之后. ...

  7. opencv第二课,使用cmake编译OpenCV,并添加opencv_contrib模块

    一.下载安装cmake 想要在Windows平台下生成OpenCV的解决方案,我们需要一个名为cmake的开源软件,可以在camke的官网:http://www.cmake.org/上下载到 或者点击 ...

  8. jquery发送请求

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  9. jenkins在windows系统下部署安装,使用

    首先需要从官网上下载下来war包,让进入tomcat中 启动tomcat,然后可以看一堆日志 再在网站输入 localhost:8080/jenkins就会进去下面界面: 会出现上面状况: 需要进入: ...

  10. Qt 学习之路 2(12):菜单栏、工具栏和状态栏

    Home / Qt 学习之路 2 / Qt 学习之路 2(12):菜单栏.工具栏和状态栏 Qt 学习之路 2(12):菜单栏.工具栏和状态栏  豆子  2012年9月10日  Qt 学习之路 2  2 ...