在发布项目到线上时,很多时候需要修改文件的权限,如果是使用git版本管理软件来发布的话,那么下次更新线上文件的时候就会提示文件冲突。明明文件没有修改,为什么会冲突呢?原来git把文件权限也算作文件差异的一部分。下面笔者自己做了个简单的例子来演示这种情况。
合并多次提交
- 找到需要合并的最后一条commitid的上一条commitid a3953b9 55ecd9c a142bb1 33018e91766fb 比如,这里需要合并前三个commit 则他们的上一个是 33018e91766fb
- 执行 git rebase -i 33018e91766fb (git rebase -i [startpoint] (endpoint)) 将区分范围内的commit 合并 第一条pick保留,其它的pick改为f pick a3953b9 feature: incoming code block name function. f 55ecd9c feature: add compile string length information and debugging symbol information f a142bb1 optimize: remove unnecessary strlen calls
- 修改commit的注释 执行 git commit –amend 把日志修改一下
- 使用fork工具看看修改是否符合自己的预期
- 强制提交
git rebase -i合并多次提交
简介
在日常开发中,代码变更比较频繁,有时候想让前几次提交的合并为一次提交,这里可以使用git rebase -i 命令来完成,当然,git rebase命令不仅仅用于合并提交,它还有许多用处,比如可以使用git rebase onto将某一段commit粘贴到另一个分支上等等,这里主要介绍合并提交。
git squash用法
在开发一个功能的时候会反复的提交代码,会造成一个功能有很多次提交,在我们要向master做分支合并的时候,就会出现很多commits,在合并以后同一个功能的commits就会很多,导致我们无法清晰的知道这个功能关联的commit有哪些,这个squash就是优化我们的commits信息,让我们的版本仓库看起来简洁明了,功能点一目了然: 使用比较简单,比如我想将本地开发分支的内容合并到master主线分支上,并且期望将一个功能的所有提交压缩成一个commit;
Centos8更改软件源为阿里源
1、备份现有源
cd /etc/yum.repos.d/
mkdir backup
mv *.repo ./backup
2、下载阿里云源文件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
或
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
3、检查以下是否成功
cat /etc/yum.repos.d/CentOS-Base.repo
4、生成缓存
yum makecache
linux动态库so调用外部so,运行时出现undefined symbol
出现这种问题,一般为某工程的动态链接库出现问题,一般为以下解决办法: 一、当前工程的.so文件和生成该.so文件的工程代码不一致,当前.so文件中不包含工程代码中的某些函数。例如我的工程代码中有NdarrytoImage()这个函数,但是我使用的.so生成时却没有该函数,则在编译的时候不包含NdarrytoImage函数,则会抛出no ndarrytoimage undefined symbol, 解决办法为将包含那个函数的工程代码重新编译,然后复制到目录中即可。
WebAssembly 不完全指北
背景:从 JavaScript 说起
JavaScript 占据着统治地位,不管是公开还是私有的项目、任何组织、世界任何地区,JavaScript 都是第一。 -GitHub 2018 年度报告
随着JavaScript的快速发展,目前它已然成为最流行的编程语言之一,这背后正是 Web 的发展所推动的。但是随着JavaScript被广泛的应用,它也暴露了很多问题:
Wasm介绍之7:文本格式
# Wasm介绍之7:文本格式
前面的文章详细介绍了WebAssembly(简称Wasm)二进制格式和指令集,这篇文章将介绍Wasm文本格式(WebAssembly Text Format,后面简称WAT)。
整体结构
WAT采用了S-表达式写法,整体结构如下所示:
(module
(type ... )
(import ... )
(func ... )
(table ... )
(mem ... )
(global ... )
(export ... )
(start ... )
(elem ... )
(data ... )
)
复制代码
文本格式是二进制格式的另外一种表现形式,但是对人类更加友好。二进制格式更适合机器(比如编译器)生成和(比如Wasm解释器)理解,文本格式则更适合人类编写和阅读。除了表现形式有明显不同,在结构上,两种格式主要有下面这些不同点:
Wasm介绍之6: 间接函数调用
# Wasm介绍之6:间接函数调用
在前面的5篇文章里,我们详细讨论了WebAssembly(简称Wasm)二进制格式和除call_indirect
之外的所有指令。这篇文章将详细介绍Wasm间接函数调用机制和call_indirect
指令。
call_indirect指令
为了更好的理解call_indirect
指令,我们首先来回顾一下call
指令的工作方式。根据之前文章的介绍 可知,call
指令带有一个立即数参数,指定被调用函数的索引。在Wasm实现执行call
指令之前,必须保证要传递给被调用函数的参数已经在栈顶,且参数的顺序和类型必须完全匹配被调函数的签名。call
指令执行完毕之后,参数已经从栈顶弹出,函数的返回值(如果有的话)会出现在栈顶。我们假设被调用函数接收两个参数,类型分别是f32
和f64
,返回值类型是i64
,下面是call
指令的示意图: