补充

  • git add 参数

$ git add <file>
$ git add .  //添加工作区已追踪文件的修改和新文件,不包括删除文件
$ git add -u //仅提交被追踪的文件,不包括新文件
$ git add -A //上面两个的合集
复制代码
  • git rebase 和 git merge 区别

基于远程分支"origin",创建一个叫"mywork"的分支:

$ git checkout -b mywork origin  //默认从当前分支切
复制代码

在mywork提交两个版本,同时远程的origin也被提交两个版本,此时两个分支出现了分叉:   在这里,你可以用"pull"命令把"origin"分支上的修改拉下来并且和你的修改合并; 结果看起来就像一个新的"合并的提交"(merge commit):

但是,如果你想让"mywork"分支历史看起来像没有经过任何合并一样,你也许可以用 git rebase:

$ git checkout mywork
$ git rebase origin
复制代码

这些命令会把你的"mywork"分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把"mywork"分支更新 为最新的"origin"分支(C4状态),最后把保存的这些补丁应用到"mywork"分支上。

当'mywork'分支更新之后,它会指向这些新创建的提交(commit),而那些老的提交会被丢弃。 如果运行垃圾收集命令(pruning garbage collection), 这些被丢弃的提交就会删除. (请查看 git gc)

  • git rebase 解决冲突

在rebase的过程中,也许会出现冲突(conflict). 在这种情况,Git会停止rebase并会让你去解决 冲突;
在解决完冲突后,用"git-add"命令去更新这些内容的索引(index), 然后,你无需执行 git-commit,只要执行:

$ git rebase --continue
复制代码

这样git会继续应用(apply)余下的补丁。
   在任何时候,你可以用--abort参数来终止rebase的行动,并且"mywork" 分支会回到rebase开始前的状态。

$ git rebase --abort
复制代码
  • 拉取远程分支并创建本地分支

$ git checkout -b 本地分支名 [origin/远程分支名]  //[]:默认是HEAD指向当前分支最新的版本
复制代码

从远程分支切出新分支,并切到新建分支上(HEAD指向新分支,新分支指向远程最新的版本)
    这种方法,本地分支和远程分支形成映射关系

$ git fetch origin 远程分支名:本地分支名
复制代码

本地新建分支,merge远程分支,不会切到新建分支上
    本地分支和远程分支不形成映射关系

  • cherry-pick

把 branch1 上面的提交commit复制到 branch2

$ git log --pretty=online  // 查看缩略信息
1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master) append bbb   //修改3
e475afc93c209a690c39c13a46716e8fa000c366 add aaa    //修改2
eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 wrote a readme file    //修改1
复制代码

把 修改2 和 修改3 复制到branch2

$ git checkout branch2
$ git cherry-pick eaadf4e3..1094adb  // 把 修改1 到 修改3 复制到branch2 (不包括修改1)
复制代码

cherry-pick 两种方法

$ git cherry-pick commitid  //单个
$ git cherry-pick commitid1..commitid100    //多个,不包含commitid1
复制代码
  • 代码回滚(远程和本地)

    操作分析:

    一开始是这样:

    A - B - C - D 远程
    A - B - C - D 本地

    第一步,git reset --hard B

    A - B - C - D 远程
    A - B             本地

    第二步,修改本地代码,记为 E

    A - B - C - D  远程
    A - B - E         本地

    如果我们现在pull 远程代码,情况如下:

    A - B - C - D 远程
    A - B - E - D' 本地

    其中,D' 包含了 C 和 D 的改动,merge 的是 "Fetched HEAD",也就是远程的 D
    如果你希望远程是 A - B - E,那就不要 pull,git push --force强制推送

  • git fetch,git merge,git pull

    关系:

    git fetch + git merge = git pull
    复制代码

    git pull 过程:

    // 本地分支,与线上分支的差别
    git fetch  //下载远程服务器最新更改到本地
    git diff origin/xxx  //查看差别// 可进一步查看哪些文件改动
    git diff HEAD FETCH_HEAD
    或者
    git diff HEAD FETCH_HEAD --stat//具体到文件改动内容
    git diff HEAD FETCH_HEAD xxxx/xxxx.jsgit merge origin XXXX
    复制代码

GIT使用总结(二)相关推荐

  1. Git基础(二)本地Git仓库管理

    Git基础(二)本地Git仓库管理 以下内容来自对<精通Git 第二版>的学习总结整理,可直接食用 注:本文以windows10操作系统,cmd命令为参考. 如果您使用的是mac os,那 ...

  2. Git使用教程(二) — Git安装和使用

    Git使用教程(二) - Git安装和使用 使用目的:通过git管理github托管的项目代码 一.下载安装 GIt官网下载:https://www.git-scm.com/download/win ...

  3. Git复习(二)之远程仓库、注册GitHub账号、SSH警告、使用GitHub

    远程仓库 Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上.怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以"克隆"这个原始版本库,而且每 ...

  4. 【GIT 基础篇二】创建版本库与提交

    最近在项目过程中,着实是犯懒了,虽然公司使用git管理,但是感觉自己已经严重的依赖页面工具了,这次正好借助公司不是很忙,把git常用的命令整理记录一下,今天我们主要就是整理创建仓库以及修改提交功能. ...

  5. svn merger的时候 报远程主机强迫_SVN与Git比较(二)版本库与工作区

    二. 版本库与工作区 Subversion的工作区和版本库是截然分开的,而Git的工作区和版本库是如影随形的. 1. SVN的版本库和工作区是分离的 • Subversion 的工作区和版本库物理上分 ...

  6. 【Git学习笔记二】时光穿梭机

    版权声明:本文为 小异常 原创文章,非商用自由转载-保持署名-注明出处,谢谢! 本文网址:https://blog.csdn.net/sun8112133/article/details/103888 ...

  7. Git学习笔记(二)

    本文主要讲解分支管理 Git学习笔记(一) 目录 一.概念 二.创建与合并分支 2.1 简介 2.2 配图示例 2.3 命令小结 三.解决冲突 四.分支管理策略 五.Bug分支 5.1 stash功能 ...

  8. Git系列(二)、Git连接远程仓库(Gitee码云)

    Git连接远程仓库 一.什么是Git远程仓库? 二.创建远程仓库 第一步:新建仓库 第二步:创建SSH公钥 第三步:查看公钥 第四步:登录码云Gitee,打开当前仓库设置,添加SSH公钥 第五步:从本 ...

  9. Git学习系列(二)创建本地仓库及文件操作

    2019独角兽企业重金招聘Python工程师标准>>> 仓库(repository ),我们也成它为版本库.这个库里面的所有文件(包括对文件的添加.删除.修改等操作)都被Git管理起 ...

最新文章

  1. 披星“戴”云,百治百效
  2. 高效率读写文件方法比较
  3. TI Davinci DM6446开发攻略——开发环境搭建
  4. Silverlight 4 Beta正式发布
  5. 【渝粤题库】国家开放大学2021春2745农村经济管理题目
  6. 基于Tkinter和百度Aip的人体关键点检测
  7. sizeof(class)分析
  8. 2019-11-20 c语言参考手册
  9. 幼儿园计算机课程心得,幼儿主题式课程教学心得体会
  10. 沁恒CH32V307母板+OPA4377运放模块-开源
  11. 破解vs2010番茄插件
  12. easyar 实现模型的旋转和缩放
  13. 【Elasticsearch教程8】Mapping字段类型之keyword
  14. 001_扎马步_初识hadoop
  15. Simotion应用与组网之一安装篇
  16. 重读《月亮与六便士》
  17. 利用LabVIEW开发应变量测试
  18. three good things
  19. Radware荣获ICSA实验室“卓越信息安全测试奖”
  20. Cesium隐藏版权信息

热门文章

  1. android studio运行时报错the selected device is incompatible
  2. vim 语法高亮显示
  3. RHEL5系统X桌面中文乱码解决办法
  4. Keepalived原理与实战精讲
  5. 安全36计 你需要了解的那些安全术语
  6. nginx日志模块及日志格式
  7. 使用GitList查看git修改记录
  8. 邮件服务器SASL TLS 反垃圾邮件系统
  9. teechart属性和方法
  10. Exchange 2007邮件服务器