首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Git 命令归纳总结

此命令通常也用来提交记录级别显示两个或多个分支之间的差异。 本书的每一章几乎都有用到此命令来描述一个项目的历史。 查看提交历史 一节中我们介绍了此命令,并深入做了研究。... 发布子模块改动 一节中,我们使用 --recurse-submodules 选项来检查是否我们所有的子模块的工作都已经推送子项目之前已经推送出去了,当使用模块时这真的很有帮助。...从一个分支单独一个或者两个提交而不是合并整个分支的所有变更是非常有用的。...它将你提交中的变更的以完全相反的方式的应用到一个新创建的提交中,本质上就是撤销或者倒转。 邮件 很多 Git 项目,包括 Git 本身,基本是通过邮件列表来维护的。...如果你公共服务器上有一个分支,并且想让别人知道如何集成这些变更,而不用通过邮件发送补丁,你就可以执行此命令的输出发送给这个你想拉取变更的人。

83840
您找到你想要的搜索结果了吗?
是的
没有找到

GitHub为什么托管不了Linux内核社区?

但在内核项目这边,即使已经广泛引入了 git,大家仍然习惯将变更补丁的形式通过邮件列表进行发送。 但事实上,git 从第一个版本开始就在支持 pull request。...虽然 git 很好也很实用,但并不适用于单一贡献者:即使今天,甚至可预见的未来,pull request 仍然主要用于转发面向整个子系统的变更,或是不同代码之间同步代码重构、乃至以类似的跨领域方式更改子项目...但是,几乎所有补丁程序都由维护者们从邮件列表中获取,而非由补丁作者自行提交。...同样的,跨子系统的各项工作也更易于协调,因为您可以将同一请求提交至多个子项目;而且面向存储不同邮件列表归档中的邮件地址,您只需要一项整体讨论(可以使用 Msg-Ids: tags 邮件列表线程处理内添加所有人的标签... Linux 内核中,这一步骤将通过一系列不同的邮件列表,将补丁提交给各维护者手中。

1.5K30

详解 Vue 目录及配置文件之 package.json

npm install 命令会根据这个文件下载所有依赖模块。 1.2.2 配置说明 { // 项目/模块名称,长度必须小于等于 214 个字符,不能以"."...4.1.0" }, // 项目运行的平台 "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" }, // 供浏览器使用的版本列表...☞ 使用 ~ 表示版本范围 版本号 描述 版本范围 说明 ~2.3.4 主版本 + 次要版本 + 补丁版本 [2.3.4,2.4.0) 主版本 + 次要版本不允许变更的前提下,允许补丁版本升级(补丁板板号下限是...4,无上限) ~2.3 主版本 + 次要版本 [2.3.0,2.4.0) 主版本 + 次要版本不允许变更的前提下,允许补丁版本升级 ~2 主版本 [2.0.0,3.0.0) 主版本不允许变更的前提下...,允许次要版本 + 补丁版本升级 ☞ 使用 ^ 表示版本范围 版本号 描述 版本范围 说明 ^1.3.4 主版本号不为 0 [1.3.4,2.0.0) 主版本不为 0,允许次要版本 + 补丁版本升级(

3.5K31

Go modules基础精进,六大核心概念全解析(上)

使用 Go Modules 之前,建议大家弄清楚息息相关的六大核心概念,以方便大家在后期的开发、使用过程中理解更加深入。...当维护的模块发生了一些不兼容变更,比如修改了外部可调用的接口或者函数时,需要对主版本号进行递增,并且将次版本号和补丁版本号置为零。比如在模块中移除了一个包。...模块中添加一些新的函数或者接口,并没有影响模块的兼容性时,需要对次版本号进行递增,并且将补丁版本号置为零。...当修复了一些 bug 或者进行了一些优化时,只需要对补丁版本号进行递增就可以了,因为这些变更不会对已经公开的接口进行变更。 预发布后缀代表了这个版本号是一个预发布版本。...时间戳 (yyyymmddhhmmss),这是创建 commit 的 UTC 时间。 Git 中,这是 commit 提交时间。

77740

Go Modules基础精进,六大核心概念全解析(上)

上一篇文章《Go语言重新开始,Go Modules的前世今生与基本使用》中,笔者介绍了如何以经典的hello world为例创建一个Go module模块,需要说明的是一个模块中是可以包含多个包(package...当维护的模块发生了一些不兼容变更,比如修改了外部可调用的接口或者函数时,需要对主版本号进行递增,并且将次版本号和补丁版本号置为零。比如在模块中移除了一个包。...模块中添加一些新的函数或者接口,并没有影响模块的兼容性时,需要对次版本号进行递增,并且将补丁版本号置为零。...当修复了一些bug或者进行了一些优化时,只需要对补丁版本号进行递增就可以了,因为这些变更不会对已经公开的接口进行变更。 预发布后缀代表了这个版本号是一个预发布版本。...时间戳 (yyyymmddhhmmss),这是创建commit的UTC时间。Git中,这是commit提交时间。

23510

Go modules基础精进,六大核心概念全解析(上)

使用 Go Modules 之前,建议大家弄清楚息息相关的六大核心概念,以方便大家在后期的开发、使用过程中理解更加深入。...当维护的模块发生了一些不兼容变更,比如修改了外部可调用的接口或者函数时,需要对主版本号进行递增,并且将次版本号和补丁版本号置为零。比如在模块中移除了一个包。...模块中添加一些新的函数或者接口,并没有影响模块的兼容性时,需要对次版本号进行递增,并且将补丁版本号置为零。...当修复了一些 bug 或者进行了一些优化时,只需要对补丁版本号进行递增就可以了,因为这些变更不会对已经公开的接口进行变更。 预发布后缀代表了这个版本号是一个预发布版本。...时间戳 (yyyymmddhhmmss),这是创建 commit 的 UTC 时间。 Git 中,这是 commit 提交时间。

2.1K160

Git 中文参考(四)

如果给出了选项--files,则显示超级项目的索引与子模块的工作树之间的子模块中的一系列提交(此选项不允许使用--cached选项或提供显式承诺)。...此命令应用修补程序但不创建提交。使用 git-am [1] 从 git-format-patch [1] 生成的补丁创建提交和/或通过电子邮件接收。...--cached 不触及工作树的情况下应用补丁。而是使用缓存数据,应用补丁,并将结果存储索引中,而不使用工作树。这意味着--index。...--no-add 应用补丁时,忽略补丁所做的添加。这可用于通过首先在它们上运行 diff 并使用此选项应用结果来提取两个文件之间的公共部分,这将应用删除部分但不应用添加部分。...--inaccurate-eof 某些情况下, diff 的某些版本无法文件末尾正确检测到丢失的换行符。因此,由 diff 程序创建补丁不能正确记录不完整的行。

13610

git 那些事儿 —— 基于 Learn Git Branching

reset 后,最近一次提交所做的变更还在,但是处于未加入暂存区(Unstage)状态。...撤销变更 - revert 虽然本地分支中使用 git reset 很方便,但是这种“改写历史”的方法对大家一起使用的远程分支是无效的!...) git show # 查看某次提交的详细 diff 输出 git show --stat # 查看某次提交的文件变更列表 分支 git branch... file # 查看从 ref1 到 ref2 (包含这个两个提交) 之间的文件修改历史 git blame .. file # 查看某个提交之后 (包含这个提交... windows 和 linux 之间切换开发时,文件权限可能会发生变更 (0644 0755), diff 时产生大量的 file mode 变更记录会严重干扰对比,通过配置忽略文件权限位变化

1.9K20

5.2 分布式 Git - 向一个项目贡献

提交准则 我们开始查看特定的用例前,这里有一个关于提交信息的快速说明。 有一个好的创建提交的准则并且坚持使用会让与 Git 工作和与其他人协作更容易。...有一个创建优质提交信息的习惯会使 Git 的使用与协作容易的多。 一般情况下,信息应当以少于 50 个字符(25个汉字)的单行开始且简要地描述变更,接着是一个空白行,再接着是一个更详细的解释。...因为有几个历史悠久的、大型的项目会通过一个开发者的邮件列表接受补丁,现在我们将会通过一个例子来演示。 工作流程与之前的用例是类似的 - 你为工作的每一个补丁序列创建特性分支。...使用 git format-patch 来生成可以邮寄到列表的 mbox 格式的文件 - 它将每一个提交转换为一封电子邮件,提交信息的第一行作为主题,剩余信息与提交引入的补丁作为正文。...如果在 --- 行与补丁开头(diff --git 行)之间添加文本,那么开发者就可以阅读它;但是应用补丁时会排除它。

54320

# 虚拟 DOM 之 Diff 算法

DOM-diff 比较两个虚拟 DOM 的区别,也就是比较两个对象的区别。 作用:根据两个虚拟 DOM 对象创建补丁,然后打补丁、更新 DOM。...改变的属性 // 判断新老属性的变更,把最后的变更放在patch中 for (let key in oldProps) { if (oldProps[key] !...新增的属性 // 判断 假如新的属性,老属性中没有,也添加patch for (let key in newProps) { if (!...DOM 元素的类 createElement:创建虚拟 DOM 并返回 render:将虚拟 DOM 渲染成真实的 DOM diff:对比新老虚拟 DOM,然后返回变更 patch:将 diff 的变更更新到真实的...树的差异,得到差异对象(diff) 最后把差异对象(变化)更新到真实的 DOM 树上(patch) 这并不是 Vue,所使用的 diff 方法,只是一个简单的 diff 过程,Vue 的 diff 可以参考

15020

OpenStack更新:最小化风险和停机时间

但是,Windows和OpenStack之间的区别在于后者仍然处于变化较快的发展期,尤其是不同模块的成熟度水平有着较大差异。...此外,由于OpenStack整体软件成熟度水平不高,功能集不断发展,所以重要版本之间的小版本发布也是非常频繁且复杂。...实施具体更新之前仔细分析更新内容可以提供一种替代解决方案。 寻找那些不对其他模块有依赖性且不会实质性改变存储数据结构的模块。...如果OpenStack更新影响了跨模块的交互,那么IT团队就需要一起更新这两个模块。但是,难题在于任何节点都可能与其他任何节点进行交互。最安全的打补丁方法就是关闭所有节点。...Red Hat试图避免非重要发布版本中进行功能变更,例如可能具有跨模块影响的API。 其他的供应商也正在解决这个自动化问题。

95870

Android 框架学习5:微信热修复框架 Tinker 从使用到 patch 加载、生成、合成原理分析

(简单介绍两个比较重要的配置) buildConfig 里的是编译相关的配置 keepDexApply 是指开启补丁包根据基准包的类分部进行编译,避免补丁修改很多,导致类所在的 dex 和基准包不一样...isProtectedApp 是否使用加固模式,这种情况下只将变更的类合成补丁 dex 是对 dex 里的配置 dexMode,输入的 dex 格式,jar 或者 raw pattern 需要处理的 dex...,所以这里一般不需要再校验 做了什么,先看 attachBaseContext() 反射创建 TinkerLoader,调用 TinkerLoader#tryLoad 方法加载补丁,具体细节稍后讲解 创建桥接类...,回调桥接类各个生命周期方法 这里我们可以看到,是通过反射创建一个桥接类,桥接类里又通过反射创建了代理类,原因我们等下讲 SampleApplicaitionLike ok,我们接下来看一下 sample...市面上大多数的热补丁框架都采用 instant-run 的这套资源更新方案 加载 so Tinker 加载 SO 补丁提供了两个入口, TinkerLoadLibraryloadArmLibrary

92121

微信热修复框架 Tinker 从使用到 patch 加载、生成、合成原理分析

(简单介绍两个比较重要的配置) buildConfig 里的是编译相关的配置 keepDexApply 是指开启补丁包根据基准包的类分部进行编译,避免补丁修改很多,导致类所在的 dex 和基准包不一样...isProtectedApp 是否使用加固模式,这种情况下只将变更的类合成补丁 dex 是对 dex 里的配置 dexMode,输入的 dex 格式,jar 或者 raw pattern 需要处理的 dex...,所以这里一般不需要再校验 做了什么,先看 attachBaseContext() 反射创建 TinkerLoader,调用 TinkerLoader#tryLoad 方法加载补丁,具体细节稍后讲解 创建桥接类...,回调桥接类各个生命周期方法 这里我们可以看到,是通过反射创建一个桥接类,桥接类里又通过反射创建了代理类,原因我们等下讲 SampleApplicaitionLike ok,我们接下来看一下 sample...市面上大多数的热补丁框架都采用 instant-run 的这套资源更新方案 加载 so Tinker 加载 SO 补丁提供了两个入口, TinkerLoadLibraryloadArmLibrary

2.1K11

javascript基础修炼(11)——DOM-DIFF的实现

来渲染的),DOM-Diff所实现的功能就是找出新旧两棵Virtual-DOM之间的区别,并将这些变更渲染到真实的DOM节点上去。...DOM-Diff的基本算法描述 为了提升效率,需要在算法中使用基本的“批处理”思维,也就是说,先通过遍历Virtual-DOM找出所有节点的差异,将其记录在一个补丁包patches中,遍历结束后再根据补丁包一并执行...新旧节点tagName和key相同 开始检查属性: 检查属性删除的情况 检查属性修改的情况 检查属性新增的情况 将变更以属性变更的类型标记加入patches补丁包中 完成比较后根据patches补丁包将...小结 DomDiff算法思想其实并不是特别难理解,自己手写代码时主要的难点出现在节点索引的追踪上,因为addPatch( )阶段,需要将补丁包中的节点索引编号与旧的Virtual-DOM树对应起来,这里涉及的基础知识点有两个...本篇中节点的比较策略上只列举了一些基本场景,列表相关的节点对比相对复杂,以后的博文中再展开描述。

64820

Linux 开发过程那么麻烦,是否值得?

然而,有一件事整个过程中却从来都没有变过:代码被发送到一个(或多个)邮件列表中,然后直到做出最终判定之前,要进行一系列的审查和讨论。 尽管 Linux 是成功的,但这一过程却一直饱受诟病。...而对于 Linux 来说,这却是 至关重要 的,原因有两个: 很多人有着不同的背景、来自于不同的公司,这些公司有着不同的动机和议程。公司内部的大型项目可以使用其他机制来传递信息和确保职责。...其中有一些重组很容易:你可以使用 git add -p 选择哪些部分可以添加到每个变更中。当开始发现代码片段之间出现循环依赖时,就变得有点复杂了。假设有一个函数,它返回的对象类型是以后才引入的。...假设,评审意见是我第一次变更中添加的方法应该有一个额外的参数。再假设,我以后的所有补丁中都使用了这个方法。 现在我不得不回到第一个补丁添加参数,于是,所有后续的补丁都无法正常使用了。...例如,我可以说“将 create_bar() 函数移到 create_foo() 之前”或者“ create_bar() 参数列表最后添加一个名为 y 的整型参数”。

42440

爆肝 50 道 Python 面试题 (下)

很多系统的安全补丁也是通过猴子补丁的方式来实现的,但实际开发中应该避免对猴子补丁使用,以免造成代码行为不一致的问题。...搞不清楚MRO的情况下,可以使用类的mro方法或__mro__属性来获得类的MRO列表。 super()函数的使用。...剖析代码性能可以使用Python标准库中的cProfile和pstats模块,cProfile的run函数可以执行代码并收集统计信息,创建出Stats对象并打印简单的剖析报告。...Python中可以使用import或from ... import ...来导入包和模块导入的时候还可以使用as关键字对包、模块、类、函数、变量等进行别名,从而彻底解决编程中尤其是多人协作团队开发时的命名冲突问题...函数和类的定义,代码前后都要用两个空行进行分隔。 同一个类中,各个方法之间应该用一个空行进行分隔。 二元运算符的左右两侧应该保留一个空格,而且只要一个空格就好。

60920
领券