2021年1月

上文,https://www.cnblogs.com/eaglexmw/p/14251259.html

在修改用户名、邮箱时,有可能提交的注释信息会乱码,这时候需要手工一个个恢复

主要内容参考:https://blog.csdn.net/qq_17011423/article/details/104648075

步骤1,进入git bash下,使用rebase命令

git rebase -i HEAD~23

步骤2,上述命令会从最新的提交倒数24条提交信息,进行rebase

然后,将需要修改的那条记录,pick修改为e,保存,需要修改多条,就多条修改为e

 

 步骤3,依次执行commit /rebase命令,修改从最老至最新的日志

git commit --amend && git rebase --continue

多条记录,需要反复执行这个命令,直到修改完成

步骤4,强推仓库

git push --force origin master

 

本脚本主要复制粘贴自:https://www.jianshu.com/p/1a5c0228efb0

git代码,如果在提交后,还希望将当时的名字、邮箱全部修改掉,则需要对其进行rebase调整

具体步骤1,git 的bash窗口,创建bare仓库中,

git clone --bare https://github.com/用户名/库名.git

步骤2,将下面的名字、邮箱修改正确,脚本代码:

#!/bin/shgit filter-branch --env-filter 'OLD_EMAIL="XXX@gmail.com"CORRECT_NAME="YYY"CORRECT_EMAIL="YYY@gmail.com"

if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL"]thenexport GIT_COMMITTER_NAME="$CORRECT_NAME"export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL"]thenexport GIT_AUTHOR_NAME="$CORRECT_NAME"export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
'--tag-name-filter cat -- --branches --tags

步骤3,进入目录,并执行此脚本

步骤4,强推入gitee或github

git push --force --tags origin 'refs/heads/*'

后续,推库后,则bare仓库就没用,可以删除了。

 

c++早期版本中,结构中的联合体,在初始化时,总有很多支持不佳的编译器,这儿提供一个通用类,用于实现联合体的初始化

classUnionValue {private:
union {
uint8_t value_u8_;
uint16_t value_u16_;
uint32_t value_u32_;
int8_t value_i8_;
int16_t value_i16_;
int32_t value_i32_;
floatvalue_f_;
} base_value_;
public:explicit UnionValue(uint8_t u8_) { base_value_.value_u8_ =u8_;}explicit UnionValue(uint16_t u16_){ base_value_.value_u16_ =u16_;}explicit UnionValue(uint32_t u32_){ base_value_.value_u32_ =u32_;}explicit UnionValue(int8_t i8_) { base_value_.value_i8_ =i8_;}explicit UnionValue(int16_t i16_) { base_value_.value_i16_ =i16_;}explicit UnionValue(int32_t i32_) { base_value_.value_i32_ =i32_;}explicit UnionValue(float f_) { base_value_.value_f_ =f_;}

uint8_t value_u8() {
returnbase_value_.value_u8_;}
uint16_t value_u16() {
returnbase_value_.value_u16_;}
uint32_t value_u32() {
returnbase_value_.value_u32_;}
int8_t value_i8() {
returnbase_value_.value_i8_;}
int16_t value_i16() {
returnbase_value_.value_i16_;}
int32_t value_i32() {
returnbase_value_.value_i32_;}float value_f() {returnbase_value_.value_f_;}
};

 

整个类定义简单,且不占用额外空间,使用时也不需要有额外的代码

示例结构体:

typedef structLevel_st {
uint8_t prior_;
//优先顺序顺序 uint8_t type_; //数值类型:0 - bool/1 - uint8_t/2 - uint16_t/3 - uint32_t/4 - uint8_t/5 - uint16_t/6 - uint32_t/7 - float uint32_t offset_; //偏移 UnionValue base_value_;
}Level_st ;

初始化代码如下:

Level_st override_level[] ={
{
0, 3, 2, UnionValue(uint32_t(0))},
{
1, 7, 2, UnionValue(0.95f)},
};

 

Window下,luarocks提供了一体式的EXE文件,节省了很多麻烦,同时也带来新的问题,配置文件不知道在哪儿 

搜索资料后,才知道这种会固定寻找配置文件路径,在

C:\Users\XXXX\AppData\Roaming\luarocks

目录下

建立诸如config-5.3.lua文件,内容如下:

rocks_trees ={
{ name
= [[system]], root = [[D:/lua_5.3.5_Win64]]},
}
variables
={
LUA
= 'D:/lua_5.3.5_Win64/lua53',
LUA_BINDIR
= 'D:/lua_5.3.5_Win64',
LUA_INCDIR
= 'D:/lua_5.3.5_Win64/include',
LUA_LIBDIR
= 'D:/lua_5.3.5_Win64',
CC
= 'D:/03.Ming64/mingw64/bin/x86_64-w64-mingw32-gcc.exe',
LD
= 'D:/03.Ming64/mingw64/bin/x86_64-w64-mingw32-gcc.exe',
}

这样就可以手工指定mingw编译器的文件名了。