创建


初始化

  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. 学习-HTML5

    @@ 学习HTML5发现对我们开发工作者来说要方便很多,它现在还在发展阶段,在未来肯定会是主流. 我们知道HTML5目的是取代HTML4.01和XHTML1.0标准,他希望能够减少互联网富应用(RIA ...

  2. asp.net导出excle

    思路:实际上是读取页面上某个控件下的内容再导出 protected void btnExcel_Click(object sender, EventArgs e) { string bgType = ...

  3. oracle 调试数据库

    转载:https://www.cnblogs.com/liuqiyun/p/6589814.html 工具/原料   PL\SQL Oracle 方法/步骤     首先在PL/SQL的左侧资源栏中展 ...

  4. 8 种 NoSQL 数据库系统对比(转自: http://blog.jobbole.com/1344/)

    导读:Kristóf Kovács 是一位软件架构师和咨询顾问,他最近发布了一片对比各种类型NoSQL数据库的文章. 虽然SQL数据库是非常有用的工具,但经历了15年的一支独秀之后垄断即将被打破.这只 ...

  5. C++思考

    1.复杂类型的对象,被栈或者队列等机制进行操作时,需要重新写其拷贝构造函数等,而不能使用默认拷贝构造函数. 2.复杂数据类型的对象的打印,需要对运算符进行重载,或者调用其中定义的打印方法.

  6. 【c++】c++ 11之lamba表达式

    C++ lambda表达式与函数对象 lambda表达式是C++11中引入的一项新技术,利用lambda表达式可以编写内嵌的匿名函数,用以替换独立函数或者函数对象,并且使代码更可读.但是从本质上来讲, ...

  7. window10安装黑苹果

    一位大佬的分享笔记 启动盘https://github.com/Macrow/Hactonish clover的下载地址https://sourceforge.net/projects/clovere ...

  8. 【 python】输出随机的字符或数字

    随机输出0-9的数字 from random import choice x = choice([0,1,2,3,4,5,6,7,8,9]) print x 输出结果 #python first.py ...

  9. QQ分享登陆报错

    linker command failed with exit code 1 (use -v to see invocation)报错原因 builtSetting下搜索 bitco 改为NO

  10. jQuery 向另一个页面传参,同时跳转到该页面

    为了使参数能够传递到另外一个页面,使用ajax的跳转方式 $.ajax({ type: "POST", url:"/admin/sysjgl/sysjck/sjcs&qu ...