我想在分支中间将几个提交压缩在一起而不修改前后的提交.
我有 :
A -- B -- C -- D -- E -- F -- G
| |
master dev
origin/master
Run Code Online (Sandbox Code Playgroud)
我想把它压成
A -- H -- E -- F -- G
| |
master dev
origin/master
Run Code Online (Sandbox Code Playgroud)
在哪里H相当于B -- C -- D.我希望能够指定提交消息H.A是最后一次提交,因此所有提交后都可以重写,而不会弄乱服务器.我的想法是在快进之前清理历史master.
我怎样才能做到这一点 ?
PS:请注意,在我的情况下,我实际上有超过3次提交在中间压缩,但如果我能用3做,我应该能够做更多.
PPS:另外,如果可能的话,我更喜欢一个解决方案E,F并且G保持不变(主要是关于提交日期).
我正在尝试在Swift 2中构建一个Objective-C块,以便将其添加到NSArray类似的内容中:
typealias CompletionBlock = () -> Void
let aBlock:CompletionBlock = {
print("Hello world!")
}
let nsArray = NSMutableArray()
nsArray.addObject(aBlock) // Error
Run Code Online (Sandbox Code Playgroud)
我知道它可以很好地使用Swift数组,但我需要一个NSArray与现有Objective-C代码兼容的地方.如果我使用swift数组,编译器将拒绝将其转换为a,NSArray因为它不会是a [AnyObject](它将是a [Any]).
这里的问题是swift闭包不是与Objective-C块相反的对象,Objective-C块是场景后面的对象(它们的实例NSBlock是其子类NSObject)
所以我的问题是:如何在swift中创建一个Objective-C块?我尝试过@convention (block)在typealias中使用但它不起作用.
我正在阅读来自objc.io 的优秀高级Swift书,我遇到了一些我不理解的东西.
如果在游乐场中运行以下代码,您会注意到在修改字典中包含的结构时,副本访问会生成副本,但随后看起来字典中的原始值将被副本替换.我不明白为什么.究竟发生了什么?
还有,有办法避免复制吗?根据这本书的作者,没有,但我只是想确定.
import Foundation
class Buffer {
let id = UUID()
var value = 0
func copy() -> Buffer {
let new = Buffer()
new.value = self.value
return new
}
}
struct COWStruct {
var buffer = Buffer()
init() { print("Creating \(buffer.id)") }
mutating func change() -> String {
if isKnownUniquelyReferenced(&buffer) {
buffer.value += 1
return "No copy \(buffer.id)"
} else {
let newBuffer = buffer.copy()
newBuffer.value += 1
buffer = newBuffer
return "Copy \(buffer.id)"
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试对字符串列表运行 for 循环,其中一些字符串被引用,而其他字符串则不然:
STRING='foo "bar_no_space" "baz with space"'
for item in $STRING; do
echo "$item"
done
Run Code Online (Sandbox Code Playgroud)
预期结果:
foo
bar_no_space
baz with space
Run Code Online (Sandbox Code Playgroud)
实际结果:
foo
"bar_no_space"
"baz
with
space"
Run Code Online (Sandbox Code Playgroud)
我可以通过运行以下命令来达到预期的结果:
bash -c 'for item in '"$STRING"'; do echo "$item"; done;'
Run Code Online (Sandbox Code Playgroud)
我想在不生成新的 bash 进程或使用的情况下执行此操作,eval因为我不想冒执行随机命令的风险。
请注意,我不控制 STRING 变量的定义,我通过环境变量接收它。所以我不能写这样的东西:
array=(foo "bar_no_space" "baz with space")
for item in "${array[@]}"; do
echo "$item"
done
Run Code Online (Sandbox Code Playgroud)
如果有帮助,我实际上想做的是将字符串拆分为参数列表,我可以将其传递给另一个命令。
我有:
STRING='foo "bar_no_space" "baz with space"'
Run Code Online (Sandbox Code Playgroud)
我想运行:
my-command --arg foo --arg "bar_no_space" --arg "baz with space"
Run Code Online (Sandbox Code Playgroud) 在分析崩溃报告时,我看到了一个Non UI我以前从未见过的角色。我试图了解它对应的应用程序的状态。
Hardware Model: iPhone7,2
Code Type: ARM-64 (Native)
Role: Non UI
Parent Process: launchd [1]
OS Version: iPhone OS 11.4 (15F79)
Report Version: 104
Run Code Online (Sandbox Code Playgroud)
在Role头文件中提到这里,它指向内核源代码。在源代码的最新可用版本(以及以前的版本)中,我看到了一个TASK_NONUI_APPLICATION枚举常量,但它没有记录。
已经有一个TASK_FOREGROUND_APPLICATION和一个TASK_BACKGROUND_APPLICATION常量,所以我不明白Non UI(或TASK_NONUI_APPLICATION)可以是什么。
我有一个使用Google Analytics的移动iOS应用.
最近我在报告中收到了明显不是来自我的应用程序的点击.我想有人必须使用我的跟踪器ID(我希望,错误).
所以我一直在尝试创建一个不包含此流量的过滤视图.我的第一种方法是在applicationID字段上创建一个包含过滤器,希望能过滤掉任何没有正确applicationID的匹配.使用Google Analytics(分析)iOS SDK时,此字段始终使用应用包标识符进行设置,因此,如果不是不可能的话,非常不可能的是,其他人错误发送的匹配将具有正确的值.
它没有用,在想知道为什么好几天后,我才知道.有关视图过滤器的文档(https://support.google.com/analytics/answer/1033162)实际上说:" 过滤器中指定的字段必须存在于匹配中,而不是为了将过滤器应用于该过滤器点击 ".因此我无法对丢失的字段进行过滤,这是一个问题,因为我收到的那些不需要的命中似乎将所有字段都清空.
这引出了我的问题:以前有没有人遇到过这个问题?如果是的话,你的方法是什么?
目前我正在使用一个未经过滤的视图,其中包含一个自定义段来完成工作(因为使用段可以过滤空字段).但我希望有一个过滤后的视图,我可以应用实际细分.
感谢您的见解
ios ×2
bash ×1
closures ×1
crash-dumps ×1
darwin ×1
git ×1
git-squash ×1
objective-c ×1
quotes ×1
swift ×1
swift2 ×1
xnu ×1