我的 git 存储库中有以下更改历史记录:
---X---Y---Z---A---B---C
Run Code Online (Sandbox Code Playgroud)
我从代码 Z 的基础开始工作,并进行了 A、B 和 C 三个更改。这些更改中的每一个都已作为单独的评论上传到 Gerrit 上,并且每个更改都取决于之前的更改。
经过审查后,我想删除更改 A,以便我的更改历史记录为:
---X---Y---Z---B---C
Run Code Online (Sandbox Code Playgroud)
git rebase -i让它git commit发挥作用的正确流程是什么?
我假设如下:
用于git rebase -i HEAD~3显示最后三个提交。这显示了文件内容:
pick 1234567 Commit A message
pick 1a2b3c4 Commit B message
pick abcdefg Commit C message
然后我可以删除第一行并保存文件以删除第一个提交。
这就是我陷入困境的地方...如果我尝试,git commit --amend我只能修改 C 的提交。因此,我不知道如何将我的 rebase 更改推送到 Gerrit 进行审查,使用repo upload .或git push
我使用的是 Gerrit 2.2,因此审核页面上没有 rebase 按钮。
我试图理解为什么以下字符串传递适用于我的错误字符串.我从一个更大的来源我做了这个例子.
我的问题是; 为什么我不必为包含我的错误消息的char数组专门分配内存?我原本以为我需要为字符串malloc一些内存并使用err指针来指示这个内存的开始.
这const char *是因为它是a 或者是因为我正在打印到stderr吗?
我可能写错了这个问题,这就是为什么搜索没有帮助我理解这一点.
const char * my_function(int a)
{
if (a != 1)
return "a doesn't equal 1!"
else
return NULL;
}
int main(int a)
{
const char *err;
err = my_function(a);
if (err)
fprintf(stderr, "Message = %s\n",err);
return 1;
return 0;
}
Run Code Online (Sandbox Code Playgroud)