这是情况:一些提交已在远程存储库中完成.
不幸的是,有人这样做push -f,没有远程分支引用这些提交了.
更糟糕的是,我在本地克隆中没有这些提交.
我的目标基本上是恢复那些提交.这些是我尝试的一些事情:
git checkout -b recovery <commit_id> :致命:引用不是树git push origin <commit_id>:recovery
错误:refs/heads/recovery没有指向有效对象!错误:无法推送到不合格的目标:恢复目标refspec既不匹配遥控器上的现有引用也不以refs /开头,我们无法根据源引用猜测前缀.
我正在尝试在Web扩展中使用共享的vue.js状态。
状态存储在后台脚本的DOM中,并在弹出页面中呈现。
我的第一次尝试是使用没有vuex的简单存储:
var store = {
count: 0
};
Run Code Online (Sandbox Code Playgroud)
browser.runtime.getBackgroundPage().then(bg => {
var store = bg.store;
var vue = new Vue({
el: '#app',
data: {
state: store
},
})
})
Run Code Online (Sandbox Code Playgroud)
<div id="app">
<p>{{ state.count }}</p>
<p>
<button @click="state.count++">+</button>
</p>
</div>
<script src="vue.js"></script>
<script src="popup.js"></script>
Run Code Online (Sandbox Code Playgroud)
这在第一次打开弹出窗口时起作用(您可以增加计数器并更新值),但是在第二次打开弹出窗口时,渲染将失败[Vue warn]: Error in render: "TypeError: can't access dead object"。这似乎是由于以下事实造成的:第一个弹出窗口中的vue.js实例store通过设置自己的getter / setter 修改了,自从第一个弹出窗口关闭以来,该实例已被删除,从而使共享状态不可用。这似乎是不可避免的,所以我决定尝试一下vuex。
var store = new Vuex.Store({
state: {
count: 0
},
mutations: { …Run Code Online (Sandbox Code Playgroud) 我想将类似C的联合导出为字节数组,如下所示:
[StructLayout(LayoutKind.Explicit)]
struct my_struct
{
[FieldOffset(0)]
public UInt32 my_uint;
[FieldOffset(0)]
public bool other_field;
}
public static void Main()
{
var test = new my_struct { my_uint = 0xDEADBEEF };
byte[] data = new byte[Marshal.SizeOf(test)];
IntPtr buffer = Marshal.AllocHGlobal(data.Length);
Marshal.StructureToPtr(test, buffer, false);
Marshal.Copy(buffer, data, 0, data.Length);
Marshal.FreeHGlobal(buffer);
foreach (byte b in data)
{
Console.Write("{0:X2} ", b);
}
Console.WriteLine();
}
Run Code Online (Sandbox Code Playgroud)
我们获得的输出(https://dotnetfiddle.net/gb1wRf)01 00 00 00不是预期的EF BE AD DE.
现在,如果我们将other_field类型更改为byte(例如),我们会得到什么?
奇怪的是,我们首先得到了我们想要的输出,EF BE AD …