GIT使用总结(二)
补充
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使用总结(二)相关推荐
- Git基础(二)本地Git仓库管理
Git基础(二)本地Git仓库管理 以下内容来自对<精通Git 第二版>的学习总结整理,可直接食用 注:本文以windows10操作系统,cmd命令为参考. 如果您使用的是mac os,那 ...
- Git使用教程(二) — Git安装和使用
Git使用教程(二) - Git安装和使用 使用目的:通过git管理github托管的项目代码 一.下载安装 GIt官网下载:https://www.git-scm.com/download/win ...
- Git复习(二)之远程仓库、注册GitHub账号、SSH警告、使用GitHub
远程仓库 Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上.怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以"克隆"这个原始版本库,而且每 ...
- 【GIT 基础篇二】创建版本库与提交
最近在项目过程中,着实是犯懒了,虽然公司使用git管理,但是感觉自己已经严重的依赖页面工具了,这次正好借助公司不是很忙,把git常用的命令整理记录一下,今天我们主要就是整理创建仓库以及修改提交功能. ...
- svn merger的时候 报远程主机强迫_SVN与Git比较(二)版本库与工作区
二. 版本库与工作区 Subversion的工作区和版本库是截然分开的,而Git的工作区和版本库是如影随形的. 1. SVN的版本库和工作区是分离的 • Subversion 的工作区和版本库物理上分 ...
- 【Git学习笔记二】时光穿梭机
版权声明:本文为 小异常 原创文章,非商用自由转载-保持署名-注明出处,谢谢! 本文网址:https://blog.csdn.net/sun8112133/article/details/103888 ...
- Git学习笔记(二)
本文主要讲解分支管理 Git学习笔记(一) 目录 一.概念 二.创建与合并分支 2.1 简介 2.2 配图示例 2.3 命令小结 三.解决冲突 四.分支管理策略 五.Bug分支 5.1 stash功能 ...
- Git系列(二)、Git连接远程仓库(Gitee码云)
Git连接远程仓库 一.什么是Git远程仓库? 二.创建远程仓库 第一步:新建仓库 第二步:创建SSH公钥 第三步:查看公钥 第四步:登录码云Gitee,打开当前仓库设置,添加SSH公钥 第五步:从本 ...
- Git学习系列(二)创建本地仓库及文件操作
2019独角兽企业重金招聘Python工程师标准>>> 仓库(repository ),我们也成它为版本库.这个库里面的所有文件(包括对文件的添加.删除.修改等操作)都被Git管理起 ...
最新文章
- 披星“戴”云,百治百效
- 高效率读写文件方法比较
- TI Davinci DM6446开发攻略——开发环境搭建
- Silverlight 4 Beta正式发布
- 【渝粤题库】国家开放大学2021春2745农村经济管理题目
- 基于Tkinter和百度Aip的人体关键点检测
- sizeof(class)分析
- 2019-11-20 c语言参考手册
- 幼儿园计算机课程心得,幼儿主题式课程教学心得体会
- 沁恒CH32V307母板+OPA4377运放模块-开源
- 破解vs2010番茄插件
- easyar 实现模型的旋转和缩放
- 【Elasticsearch教程8】Mapping字段类型之keyword
- 001_扎马步_初识hadoop
- Simotion应用与组网之一安装篇
- 重读《月亮与六便士》
- 利用LabVIEW开发应变量测试
- three good things
- Radware荣获ICSA实验室“卓越信息安全测试奖”
- Cesium隐藏版权信息