Git Rebase
git rebase,就是分支能干净点(把当前分支head直接定位到被rebase的位置上),单纯用 merge 也可以。
操作步骤:
featM 下开出的分支 featA。
featM 更新到了 commitM。
featA 有commitA1和commitA2。
featA 想同步featM的代码,可以通过直接拉也就是 merge,也可以 rebase,rebase之后新被rebase的新代码会在暂存区。
rebase 的前提是开出来之后最好没有推过远端。
rebase 操作之后,会把commitA1和commitA2更新成新的 commit,如果有冲突,需要持续修改每次 commit 生成新的 commit,也可以针对自己的这些 commit 做丢弃或者调整顺序或者合并操作。
由于 rebase 会改变分支的历史,所以如果你之前已经把 featA 分支推送到了远端,那么在 rebase 之后,你需要用 git push -f 命令(或者 git push –force-with-lease 命令)来强制推送。但是请注意,强制推送会覆盖远端的历史,所以在多人协作的情况下,需要谨 ...
Shell、Python、Ruby、Swift脚本环境搭建实践
脚本一般由多个命令和指令构成,可在特定的运行环境中运行。常规的简单程序会选择使用Shell脚本,原因主要是其简洁易读,而对于复杂脚本的编写较为困难。当涉及到第三方库的使用时,Python或Ruby成为编写脚本的首选。Swift3之后也出了解释器,也可以直接通过swift xxx.swift执行简单的swift代码,也可以通过SPM引入第三方库,生成命令行可执行程序的方式封装执行序列。
Shell脚本
以 #!/bin/sh 开头的文件,程序在执行的时候会调用 /bin/sh ,也就是bash解释器。如果脚本未指定 shebang,脚本执行的时候,默认用当前shell去解释脚本,即 $SHELL。由于 shell 直接和计算机内核交互以及集成了很多常用内置命令,所以效率应该是高效的。
执行方式
bash script.sh 或 sh scripte.sh,文件本身没权限执行,没x权限,则使用的方法,或脚本未指定shebang。
使用 绝对/相对 路径执行脚本,需要文件含有x权限。
source script.sh 或者 . script. ...
使用Xcode自带symbolicatecrash工具解析crash
fastlane打的包可以指定输出ipa和dsym文件到指定的文件夹,有时候测试发过来一个crash文件,需要解析。正常如果 xcode archive 的包,直接拖到 device 的 log 面板即可符号化。其内部起作用的是一个叫symbolicatecrash的工具。我们可以利用这个工具配合 dsym 文件手动符号化。
123456789101112build_app(workspace: "XXX.xcworkspace", configuration: "Debug", scheme: "XXX", clean: true, include_bitcode: false, export_xcargs: "-allowProvisioningUpdates", export_options: "./fastlane/ExportOptionsDev.pl ...