创建


初始化

  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>
      2. 多个文件:git add -A
    • 删除
      1. 单个文件:git rm <file>
      2. 多个文件:git rm -A

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

  • 从stage提交到master

    1. git commit

退回
退回也是要分两步:

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

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

  • 对于已经到达stage的
    1. 单个文件:git reset HEAD file
    2. 多个文件: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)
    2. git checkout <master> //切换至master分支
    3. git checkout -b <issus-911> //在master分支上创建issus-911分支
    4. git add <fix.java> //添加缺陷修改文件
    5. git commit -m <"fix bug 911"> //提交缺陷修改文件
    6. git checkout <master> //切换回master分支
    7. git merge --no-ff <issus-911> //将issus-911分支合并至master
    8. git checkout <develop> //切换至develop分支
    9. 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分支
    2. git add <feature.java> //添加新文件
    3. git commit -m <"new feature 119"> //提交新文件
    4. git checkout <develop> //切换至develop分支
    5. git merge --no-ff <new feature 119> //将new feature119分支合并至develop
    6. git branck -d <new feature 119> //将new feature119

标签

查看标签

  1. git tag

创建标签

  1. git tag <v1.0>

别名

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

  1. git config --global alias.st status
  2. git config --global alias.co checkout
  3. git config --global alias.ci commit
  4. 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. work单进程群发通知 后面会增加Channel组件的分组推送以及集群推送篇章

    <?phpuse Workerman\Worker;use Workerman\Lib\Timer; require_once '../../web/Workerman/Autoloader.p ...

  2. PPT的感想

    ①double:使用double类型的数值进行计算, 其结果是不精确的.因为double类型的数值占用64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差. 这个涉及到二进制 ...

  3. java-学习7

          数组的定义及使用 public class TestArr { public static void main(String[] args) { //声明数组 double array1[ ...

  4. python+爬虫+签名

    在公众号,看到一个比较好玩的程序.它使用post的来传送请求,以前没有遇到过.可能是自己,写的程序太少了.查了一下post的用法: 通常,你想要发送一些编码为表单形式的数据——非常像一个 HTML 表 ...

  5. 1.3.2、CDH 搭建Hadoop在安装之前(端口---Cloudera Navigator加密使用的端口)

    列出的所有端口都是TCP. 在下表中,每个端口的“ 访问要求”列通常是“内部”或“外部”.在此上下文中,“内部”表示端口仅用于组件之间的通信; “外部”表示该端口可用于内部或外部通信. 零件 服务 港 ...

  6. ChromDevTools

    [ChromDevTools] 1.如何打开DevTools. 在Chrome菜单中选择 更多工具 > 开发者工具 在页面元素上右键点击,选择 “检查” 使用 快捷键 F12 2.切换 Devi ...

  7. java程序重要节点

    1.前台页面 2.前台页面到controller层跳转 和controller层的承上启下(jsp页面和java程序的桥梁) 3.serviceIpmle 程序处理的逻辑层 3.mybatis操作数据 ...

  8. myeclipse2014安装aptana3.4.0插件(转)

    1.下载aptana3.4.0_eclipse的zip包  http://pan.baidu.com/s/1qXOiZl6 或者是:https://pan.baidu.com/s/1jIqOYcI 2 ...

  9. java中继承thread类的其他类的start()方法与run()方法

    java中继承thread或者实现runnable接口的类必须重写run()方法. 如果其执行了start()方法,其实就是启动了线程的run()方法. 注意:如果是实现runnable接口的类是没有 ...

  10. C#反射调用其它DLL的委托事件 传值

    C#反射调用其它DLL的委托事件 传值在插件式开发.我们要调用其它插件或模块的委托事件时.那么我们需要通过反射. 复制代码namespace Module2{ /// <summary> ...