创建


初始化

  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. 新手如何学习Java——Java学习路线图

    推荐初学者阅读:新手如何学习Java——Java学习路线图

  2. Centos新增group和user

    新增group groupadd hadoop 新增用户 useradd -d /usr/hadoop -g hadoop -m hadoop 设置密码 passwd hadoop

  3. jxls2 java.lang.NegativeArraySizeException

    某个单元格使用jx:each报这个错误. 内部代码,创建一个二维数组时,传了一个负值进去 解决办法 将这个单元格删除,重新编写批注

  4. CentOS服务器,大访问量会造成日志文件迅速增大,半年左右得清除一下

    今天早上一打开QQ,一大群客户说我的网站登录不了,谷歌了一下,原来是服务器不能存储SESSION.后来问一下服务器托管商,被告知我的VPS运行的时间太久并且访问量很大,因此访问日志爆满. 服务器托管商 ...

  5. 正则表达式pattern属性

    你发现自己多久匆匆编写一些正则表达式验证一个特定的文本. 多亏了新的pattern属性,我们可以在标签处直接插入一个正则表达式. <form action="" method ...

  6. python基础入门学习简单程序练习

    1.简单的乘法程序 i = 256*256 print('The value of i is', i) 运行结果: The value of i is 65536 2.执行python脚本的两种方式 ...

  7. Python+Selenium学习--下拉框处理

    场景 下拉框也是web 页面上非常常见的功能,webdriver 对于一般的下拉框处理起来也相当简单,要想定位下拉框中的内容,首先需要定位到下拉框:这样的二次定位 下拉框一般有以下两种方式: 鼠标移上 ...

  8. oracle数据库新建库

    1.https://jingyan.baidu.com/article/76a7e409f3f37bfc3b6e15de.html 利用工具新建库. 2.创建时报错 out of memory 调节s ...

  9. “东信杯”广西大学第一届程序设计竞赛(同步赛)H

    链接:https://ac.nowcoder.com/acm/contest/283/H来源:牛客网 题目描述 由于临近广西大学建校90周年校庆,西大开始了喜闻乐见的校园修缮工程! 然后问题出现了,西 ...

  10. Python: print stdout同行输出

    项目中发现,PyCharm运行youtube_dl下载,其进度在同行显示,即替换上行输出. 稍做研究,记录下来: #coding=utf-8 from __future__ import print_ ...