创建


初始化

    1. git init Initialized empty Git repository in <file>

关联

    1. git remote add origin <git@server-name:path/repo-name.git>

克隆

    1. git clone <git@server-name:path/repo-name.git>

从已有远程库中拷贝

查看


状态日志

    1. git status

提交内容日志

    1. git log

分支合并日志

    1. git log --graph

操作步骤日志

    1. git reflog

差异日志

    1. git diff

远程库信息

    1. git remote -v

提交&撤销


提交
提交代码更改分两个阶段:

  1. 从工作目录,提交到stage;
  2. 从stage提交到master;
  • 从工作目录提交到stage

    • 新增
        1. 单个文件:git add <file>
        1. 多个文件:git add -A
    • 删除
        1. 单个文件:git rm <file>
        1. 多个文件:git rm -A

      只提交到stage,而没有提交到master,是不会自动同步到master的

  • 从stage提交到master

      1. git commit

退回
退回也是要分两步:

  1. 从master退回到stage;
  2. 从stage退回到工作目录;
  • 对于还没有提交到stage的
      1. 单个文件:git checkout --<file>
      1. 多个文件:git checkout master/develop

    退回一步取stage中的文件状态,覆盖掉工作目录中文件的状态,跟master完全没关系。

  • 对于已经到达stage的
      1. 单个文件:git reset HEAD file
      1. 多个文件:git reset HEAD^

    把state中的文件状态用master中的覆盖掉,这样就把stage中修改用master的状态覆盖掉了,完全跟工作目录没关系

更新


第一次推送

    1. git push -u origin master

推送最新修改

    1. git push origin master

分支


查看分支

    1. git branch

创建分支

    1. git branch <name>

切换分支

    1. git checkout <name>

创建+切换分支

    1. git checkout -b <name>

合并某分支到当前分支

    1. git merge <name>

合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息

    1. git merge --no-ff -m "merge with no-ff" <name>

因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去

推送分支

    1. git push origin <master>

git rebase与git marge的差异


将当前分支更新为最新的目标分支分支

    1. git rebase <origin>

应用修改提交

    1. git rebaes --continue

终止流程

    1. git rebaes --abort

跳过此版本

丢弃本地修改,慎用

    1. git rebaes --skip

删除分支

    1. git branch -d <name>

bug分支

储藏

    1. git stash

将目前当所有修改用油纸包起来,快速地将工作环境恢复到上一个commit时的状态
并不是不想提交,而是工作进行到一半,线上缺陷来了,没法提交

  • 线上缺陷储藏步骤
      1. git stash //储藏现有工作分支(一般为develop)
      1. git checkout <master> //切换至master分支
      1. git checkout -b <issus-911> //在master分支上创建issus-911分支
      1. git add <fix.java> //添加缺陷修改文件
      1. git commit -m <"fix bug 911"> //提交缺陷修改文件
      1. git checkout <master> //切换回master分支
      1. git merge --no-ff <issus-911> //将issus-911分支合并至master
      1. git checkout <develop> //切换至develop分支
      1. git merge --no-ff <issus-911> //将issus-911分支合并至develop

查看储藏

    1. git stash list

恢复储藏

    1. git stash apply <stash@{0}>

删除储藏

    1. git stash drop

恢复并删除储藏

    1. git stash pop

feature分支

  • 新feature开发步骤
      1. git checkout -b <new feature 119> //在develop分支上创建issus-911分支
      1. git add <feature.java> //添加新文件
      1. git commit -m <"new feature 119"> //提交新文件
      1. git checkout <develop> //切换至develop分支
      1. git merge --no-ff <new feature 119> //将new feature119分支合并至develop
      1. git branck -d <new feature 119> //将new feature119

标签

查看标签

    1. git tag

创建标签

    1. git tag <v1.0>

别名

命令嫌太长了,可以取个别名

    1. git config --global alias.st status
    1. git config --global alias.co checkout
    1. git config --global alias.ci commit
    1. git config --global alias.br branch

2015-09-27 git学习的更多相关文章

  1. Git学习(二)(2015年11月18日)(2016年1月29日)

    2015年11月18日Git学习: .Shell 删除文件夹及其所有文件 rd/s/q 文件目录 ---------------当前为先创建本地Git库后与网上Git服务器关联------------ ...

  2. [.net 面向对象程序设计进阶] (27) 团队开发利器(六)分布式版本控制系统Git——在Visual Studio 2015中使用Git

    [.net 面向对象程序设计进阶] (26) 团队开发利器(六)分布式版本控制系统Git——在Visual Studio 2015中使用Git 本篇导读: 接上两篇,继续Git之旅 分布式版本控制系统 ...

  3. GIT学习(二)

    学习地址: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 常用git命令: 1. ...

  4. SVN和Git的功能和区别,尚学堂SVN和Git学习视频资料免费下载

    对于软件开发人员来说,版本控制系统再熟悉不过了,所谓版本控制系统就是软件项目开发过程中用于储存开发人员所写代码所有修订版本的软件.目前常见的版本控制系统分为集中式版本控制系统(SVN)和分布式版本控制 ...

  5. Git 学习(八)其他

    Git 学习(八)其他 通过以上七章Git的学习,基本操作已差不多了,本章介绍一点落网之鱼:  包括如何忽略文件.配置别名.以及使用GitHub等. 当然,Git的强大远不是七章内容可概括的,之后可结 ...

  6. Git学习-->如何通过Shell脚本实现 监控Gitlab备份整个过程并且通过邮件通知得到备份结果?

    一.背景 Git学习–>如何通过Shell脚本自动定时将Gitlab备份文件复制到远程服务器? http://blog.csdn.net/ouyang_peng/article/details/ ...

  7. [转]git学习------>git-rev-parse命令初识

    git学习------>git-rev-parse命令初识 2017年06月13日 10:04:13 阅读数:2172 一.准备工作 第一步:在d盘git test目录下,新建工作区根目录dem ...

  8. Git学习笔记--实践(三)

    文中红色的文字(标为:## 插曲)是在Git学习/实践过程中,我个人遇到的一些问题,每个“## 插曲”之后,都有相应的解决方案. 一.创建版本库 版本库又名仓库,英文名repository,可简单的理 ...

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

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

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

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

随机推荐

  1. DNS域名解析中A、AAAA、CNAME、MX、NS、TXT、SRV、SOA、PTR各项记录的作用

    名注册完成后首先需要做域名解析,域名解析就是把域名指向网站所在服务器的IP,让人们通过注册的域名可以访问到网站.IP地址是网络上标识服务器的数字地址,为了方便记忆,使用域名来代替IP地址.域名解析就是 ...

  2. apt-get出现的问题

    报的错 E: 无法获得锁 /var/cache/apt/archives/lock – open (11 资源临时不可用) E: 无法锁定下载目录 解决方法一: #:ps -aux (列出进程,形式如 ...

  3. git 使用说明

    git使用的一些说明 关于新用户1. 到优居客群里下载git客户端2. 安装之后打开git bash3. 生成密钥,执行如下命令:    ssh-keygen -t rsa -C "你的邮箱 ...

  4. linux中awk命令学习

    awk是一个强大的文本分析工具,awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. 通常获取某一行时,我们会使用 “grep 关键字“进行查找,但在读取某一列时, ...

  5. 大数据入门到精通5--spark 的 RDD 的 reduce方法使用

    培训系列5--spark 的 RDD 的 reduce方法使用 1.spark-shell环境下准备数据 val collegesRdd= sc.textFile("/user/hdfs/C ...

  6. oracle_效率优化

    1.并行和强制走索引的用法 SELECT/*+parallel(T 16) parallel(B 16) parallel(D 16)*/ T.POLICY_NO, T.DEPARTMENT_CODE ...

  7. 用两个栈实现队列(python)

    题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. # -*- coding:utf-8 -*- class Solution: def __init__( ...

  8. CentOS Mysql常用命令

    1.更改root密码 mysqladmin -uroot password 'yourpassword' 2.远程登陆mysql服务器 mysql -uroot -p -h192.168.137.10 ...

  9. mute

    mute - 必应词典 英[mjuːt] n.哑吧:沉默的人:[法律]拒绝答辩的被告人:鸟粪 adj.哑的:缄默无言的:(一时)说不出话的:(猎狗)不叫的 v.排泄:减弱…的声音:柔和…的色调 网络静 ...

  10. unity美少女动作RPG游戏源码Action-RPG Starter Kit v5.0a

    功能完整的ARPG游戏模板 Core Features!! - Combat System - Skill Tree - Enemy AI - Save-Load Game - Shop System ...