git命令详解( 四 )
此篇为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命令详解( 四 )相关推荐
- GitHub使用教程详解(下)——Git的安装以及Git命令详解
上一篇GitHub使用教程详解(上)--官网操作指南[翻译],是针对官网的guide进行了翻译,其实个人来说,我是很不喜欢那么操作的,又要等待页面加载,操作又慢!程序员嘛,还是直接敲入命令代码更迅速高 ...
- java开发中常用的Git命令详解
java开发中常用的Git命令详解(IDEA内如何操作) 一:写这篇文章的目的是什么? 二:使用场景在哪里? 1:当我们要使用idea去git仓库拉代码时,首先我们的idea得配置git工具 2:项目 ...
- git 命令详解_再次学习Git版本控制工具
微信公众号:PHP在线 Git 究竟是怎样的一个系统呢?为什么在SVN作为版本控制工具已经非常流行的时候,还有Git这样一个版本控制工具呢?Git和SVN的区别在哪儿呢?Git优势又在哪呢?下面PHP ...
- Git命令详解及工作实用流程
Git基本使用 1.什么是Git 1.1 Git简介 1.2Git的优点 2.Git和SVN的区别 3.Git常用命令 3.1 设置用户签名 3.2 初始化本地库 3.3 查看本地库状态 3.3.1首 ...
- 【Git版本控制】Git命令详解
文章目录 前言 1.展示帮助信息 2.回到远程仓库的状态 3.重设第一个 commit 4.查看冲突文件列表 5.展示工作区和暂存区的不同 6.展示暂存区和最近版本的不同 7.展示暂存区.工作区和最近 ...
- git 命令详解和Android Studio代码管理工具
目录 前言 git命令上传项目 一.核心操作 二.解决冲突 三.情景举例 四.查看ssh密钥 五.克隆远程项目 六.回退某个操作 七.和远程分支建立关联 八.删除文件 九.远程仓储 十.多人协作 十一 ...
- git命令详解( 八)
此为记录git的第八篇,前七篇为远程篇,工作中最常用的都在前七篇,因为要在远程分支上合作开发 在提交树上移动 撤销变更 在提交树上移动 在接触 Git 更高级功能之前,我们有必要先学习在你项目 ...
- git命令详解( 六 )
此为git命令的第六篇 远程跟踪分支 不知道大家有没有发现在前面几篇中Git 好像知道 master 与 o/master 是相关的.当然这些分支的名字是相似的,可能会让你觉得是依此将远程分支 mas ...
- git命令详解( 三 )
此篇为git命令的第三篇 目录 git Pull 模拟团队合作 Git Pull 在上一篇的结尾我们已经知道了如何用 git fetch 获取远程的数据, 现在我们学习如何将这些变化更新到我们的工作当 ...
最新文章
- linux下gdb所有实用方法
- Flink SQL 功能解密系列 —— 解决热点问题的大杀器MiniBatch
- Linux2.6--进程抢占和上下文切换
- Python之路【第一篇】:Python基础(2)
- perl regular expresstion
- js --- 递归结构图
- 【物联网】 Ubuntu中生成交叉编译器xtensa-lx106-elf
- centos7装完chrome无法使用yum问题解决
- python import 路径设置
- php实现无限级树型菜单(函数递归算法)
- Http Module 介绍[转]
- 基于JAVA的在线图书销售系统
- JAVA中的位运算符
- 你们小时候绝对没玩过的游戏
- 计算机丢失bass,dll,bassasio.dll(缺失bassasio.dll文件修复工具)V1.0 正式版
- 最近五年中秋节后第一天涨幅前十个股在此 沪深三七开 更多规律你来找
- 图像处理——简单浮雕效果和倒影效果实战
- 习题 6.10 有一篇文章,共有三行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。
- 权限管理框架实现(1)--Struts切面处理
- cadence Virtuoso ADE原理图库中的VCVS(压控电压源)使用
热门文章
- UG10.0三四五轴零件模具拆电极编程加工全套视频教程
- jmeter之Json断言使用方法
- 图大杀猫:数据可视化的真善美
- 深度学习 之受限玻尔兹曼机
- 让双网卡同时工作在内网和外网
- Vue3+TypeScript实现网易云音乐WebApp(播放界面:播放、暂停、音量控制、播放进度控制(点击/拖拽进度条)、上一首、下一首)
- tga缩略图预览_带有缩略图预览的弹性图像幻灯片
- Centos7 Radius服务搭建
- CTK编译及使用(Qt5.9.9 + MSVC2015_x64 + CMake3.23.1)
- matlab疑难问题笔记