将`荚update`覆盖我的代码更改当容器的新版本可用?(Will `pod update` ove

2019-09-04 02:33发布

我已经添加MKStoreKit 4.99版本使用的CocoaPods我的项目。 我Podfile包括:

platform :ios, '6.0'
pod 'MKStoreKit', '~> 4.99'

MKStoreKit有一个名为MKStoreKitConfigs.h一个配置文件,需要在每个项目的基础上进行修改,我已经适当地修改的文件。 当MKStoreKit发布一个新的版本会发生什么,说5.0,我执行pod update ? 请问我的变化被覆盖? 你能描述为什么是或为什么没有?

Answer 1:

是的,荚更新将覆盖您的更改。 你可以做的是叉在Github上项目使你的叉子和点的CocoaPods到叉的变化。 见通过cocoaPod GitHub上使用Restkit的叉子? 如何做到这一点。



Answer 2:

据我所知这是一个已知的问题,也可以作为一个说:“这是一种不好的做法来配置头文件第三方LIB”。

所以刚开始你可以看看这个承诺 。 IMO这是一种更好的方式来配置它。

您也可以作为一个吊舱使用添加您的叉:

pod 'MKStoreKit.MyFork', :path => 'MKStoreKit.MyFork.podspec'

编辑:感谢rounak用于察觉, :local现在是:path 。 从的CocoaPods文档:

使用此选项( :path )的CocoaPods将承担指定文件夹是波德的根,将文件直接从那里荚项目联系起来。 这意味着,您的修改将的CocoaPods安装之间依然存在。 引用的文件夹可以将自己喜欢的SCM的结账,甚至当前回购的git的子模块。



Answer 3:

这是一个老的文章,但我有一个非常简单的解决方法,让你做出改变豆荚。

如前所述, pod update将覆盖您所作的任何更改。 但是,如果你使用Git是我想要做的是,除了承诺为我吊舱改变我的所有更改。

一旦只有我有我的分支的变化是豆荚的变化,我通过运行藏匿荚变化git stash save "Custom Cocoapod changes, apply after every pod update" 。 你可以给它你会通过更改“”之间的文本喜欢的任何消息。

此命令正在重置您的工作目录到以前的HEAD,所以如果你想重新应用这些储物箱,你可以只运行的副作用git stash apply于那些修改回来,然后你可以提交他们拯救他们。

不要使用git stash pop ,因为这会在应用后删除藏匿。

现在,在将来某个不确定的时候,当你更新你的豆荚和它的时间再次申请藏匿,你会想要做的是什么运行git stash list 。 这将返回您与最近的是零索引所做的所有藏匿的列表。 您可能会看到这样的内容:

stash@{0}: On featureFooBar: foo bar
stash@{1}: On Master: Custom Cocoapod changes, apply after every pod update
...

如果自定义可可豆荚变化藏匿在藏匿@ {0}那么完美,你可以运行git stash apply再次,你会得到你的工作目录的变化。 否则,一旦你找到其藏匿数你的豆荚变化是,你可以通过运行该应用藏匿git stash apply stash@{1}

应用藏匿处是最容易当你有在同一分支上一个干净的工作目录但那不是必须的。 该页面提供了混帐藏匿,以及如何以其它方式使用它的一个很好的说明。



文章来源: Will `pod update` overwrite my code changes when a new version of the pod is available?