此篇为git命令详解的第四篇,话不多说,我们直接上知识点好吧

   git Push

  偏离的工作

  

gitPush:

  此命令负责将你的变更上传到指定的远程仓库,并在远程仓库上合并你的新提交记录。一旦 git push 完成, 你的朋友们就可以从这个远程仓库下载你分享的成果了!你可以将 git push 想象成发布你成果的命令,注意:git push 不带任何参数时的行为与 Git 的一个名为 push.default 的配置有关。它的默认值取决于你正使用的 Git 的版本

执行命令:git push

好了,git push 命令没什么可以提交的

我们接下来看一个比较复杂一点的问题

偏离的工作:

假设你周一克隆了一个仓库,然后开始研发某个新功能。到周五时,你新功能开发测试完毕,可以发布了。但是 —— 天啊!你的同事这周写了一堆代码,还改了许多你的功能中使用的 API,这些变动会导致你新开发的功能变得不可用。但是他们已经将那些提交推送到远程仓库了,因此你的工作就变成了基于项目旧版的代码,与远程仓库最新的代码不匹配了。

这种情况下, git push 就不知道该如何操作了。如果你执行 git push,Git 应该让远程仓库回到星期一那天的状态吗?还是直接在新代码的基础上添加你的代码,异或由于你的提交已经过时而直接忽略你的提交?

因为这情况(历史偏离)有许多的不确定性,Git 是不会允许你 push 变更的。实际上它会强制你先合并远程最新的代码,然后才能分享你的工作。

下面我们看一下实际的例子

执行命令:git Push

看见了吧?什么都没有变,因为命令失败了!git push 失败是因为你最新提交的 C3 基于远程分支中的 C1。而远程仓库中该分支已经更新到 C2 了,所以 Git 拒绝了你的推送请求

那该如何解决这个问题呢?很简单,你需要做的就是使你的工作基于最新的远程分支。

有许多方法做到这一点呢,

方案一

不过最直接的方法就是通过 rebase 调整你的工作。咱们继续,看看怎么 rebase!

执行命令:git fetch

        git rebase o/master

     git push

我们用 git fetch 更新了本地仓库中的远程分支,然后用 rebase 将工们的工作移动到最新的提交记录下,最后再用 git push 推送到远程仓库。

 方案二

还有其它的方法可以在远程仓库变更了以后更新我的工作吗? 当然有,我们还可以使用 merge

尽管 git merge 不会移动你的工作(它会创建新的合并提交),但是它会告诉 Git 你已经合并了远程仓库的所有变更。这是因为远程分支现在是你本地分支的祖先,也就是说你的提交已经包含了远程分支的所有变化。

执行命令:git fetch

     git merge o/master

     git push

方案三

很好!但是要敲那么多命令,有没有更简单一点的?

当然 —— 前面已经介绍过 git pull 就是 fetch 和 merge 的简写,类似的 git pull --rebase 就是 fetch 和 rebase 的简写!

让我们看看简写命令是如何工作的。

执行命令:git pull --rebase

     git push

 方案四

  我们也可以使用git pull 来解决这个问题

执行命令:git pull

     git push

偏离的历史是非常重要的一部分,希望大家能好好看一下子

转载于:https://www.cnblogs.com/suihang/p/10521140.html

git命令详解( 四 )相关推荐

  1. GitHub使用教程详解(下)——Git的安装以及Git命令详解

    上一篇GitHub使用教程详解(上)--官网操作指南[翻译],是针对官网的guide进行了翻译,其实个人来说,我是很不喜欢那么操作的,又要等待页面加载,操作又慢!程序员嘛,还是直接敲入命令代码更迅速高 ...

  2. java开发中常用的Git命令详解

    java开发中常用的Git命令详解(IDEA内如何操作) 一:写这篇文章的目的是什么? 二:使用场景在哪里? 1:当我们要使用idea去git仓库拉代码时,首先我们的idea得配置git工具 2:项目 ...

  3. git 命令详解_再次学习Git版本控制工具

    微信公众号:PHP在线 Git 究竟是怎样的一个系统呢?为什么在SVN作为版本控制工具已经非常流行的时候,还有Git这样一个版本控制工具呢?Git和SVN的区别在哪儿呢?Git优势又在哪呢?下面PHP ...

  4. Git命令详解及工作实用流程

    Git基本使用 1.什么是Git 1.1 Git简介 1.2Git的优点 2.Git和SVN的区别 3.Git常用命令 3.1 设置用户签名 3.2 初始化本地库 3.3 查看本地库状态 3.3.1首 ...

  5. 【Git版本控制】Git命令详解

    文章目录 前言 1.展示帮助信息 2.回到远程仓库的状态 3.重设第一个 commit 4.查看冲突文件列表 5.展示工作区和暂存区的不同 6.展示暂存区和最近版本的不同 7.展示暂存区.工作区和最近 ...

  6. git 命令详解和Android Studio代码管理工具

    目录 前言 git命令上传项目 一.核心操作 二.解决冲突 三.情景举例 四.查看ssh密钥 五.克隆远程项目 六.回退某个操作 七.和远程分支建立关联 八.删除文件 九.远程仓储 十.多人协作 十一 ...

  7. git命令详解( 八)

    此为记录git的第八篇,前七篇为远程篇,工作中最常用的都在前七篇,因为要在远程分支上合作开发     在提交树上移动 撤销变更 在提交树上移动 在接触 Git 更高级功能之前,我们有必要先学习在你项目 ...

  8. git命令详解( 六 )

    此为git命令的第六篇 远程跟踪分支 不知道大家有没有发现在前面几篇中Git 好像知道 master 与 o/master 是相关的.当然这些分支的名字是相似的,可能会让你觉得是依此将远程分支 mas ...

  9. git命令详解( 三 )

    此篇为git命令的第三篇 目录 git Pull 模拟团队合作 Git Pull 在上一篇的结尾我们已经知道了如何用 git fetch 获取远程的数据, 现在我们学习如何将这些变化更新到我们的工作当 ...

最新文章

  1. linux下gdb所有实用方法
  2. Flink SQL 功能解密系列 —— 解决热点问题的大杀器MiniBatch
  3. Linux2.6--进程抢占和上下文切换
  4. Python之路【第一篇】:Python基础(2)
  5. perl regular expresstion
  6. js --- 递归结构图
  7. 【物联网】 Ubuntu中生成交叉编译器xtensa-lx106-elf
  8. centos7装完chrome无法使用yum问题解决
  9. python import 路径设置
  10. php实现无限级树型菜单(函数递归算法)
  11. Http Module 介绍[转]
  12. 基于JAVA的在线图书销售系统
  13. JAVA中的位运算符
  14. 你们小时候绝对没玩过的游戏
  15. 计算机丢失bass,dll,bassasio.dll(缺失bassasio.dll文件修复工具)V1.0 正式版
  16. 最近五年中秋节后第一天涨幅前十个股在此 沪深三七开 更多规律你来找
  17. 图像处理——简单浮雕效果和倒影效果实战
  18. 习题 6.10 有一篇文章,共有三行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。
  19. 权限管理框架实现(1)--Struts切面处理
  20. cadence Virtuoso ADE原理图库中的VCVS(压控电压源)使用

热门文章

  1. UG10.0三四五轴零件模具拆电极编程加工全套视频教程
  2. jmeter之Json断言使用方法
  3. 图大杀猫:数据可视化的真善美
  4. 深度学习 之受限玻尔兹曼机
  5. 让双网卡同时工作在内网和外网
  6. Vue3+TypeScript实现网易云音乐WebApp(播放界面:播放、暂停、音量控制、播放进度控制(点击/拖拽进度条)、上一首、下一首)
  7. tga缩略图预览_带有缩略图预览的弹性图像幻灯片
  8. Centos7 Radius服务搭建
  9. CTK编译及使用(Qt5.9.9 + MSVC2015_x64 + CMake3.23.1)
  10. matlab疑难问题笔记