小编Bla*_*ers的帖子

git rebase到远程更新

我与一个使用git进行源代码管理的小团队合作.最近,我们一直在做主题分支以跟踪功能,然后将它们合并到本地主服务器,然后将它们推送到远程服务器上的中央git存储库.当master中没有进行任何更改时,这很有用:我创建我的主题分支,提交它,将其合并到master中,然后推送.万岁.

但是,如果有人在我之前推送到原点,我的提交并不是快进的.因此,合并提交随之而来.当主题分支需要在本地与master合并以确保我的更改与现在的代码一起使用时,也会发生这种情况.因此,我们最终到处都是合并提交,以及与友谊手镯相媲美的git日志.

因此,变基是显而易见的选择.我想要的是:

  • 创建主题分支持有多个提交
  • checkout master和pull(快进因为我还没有承诺掌握)
  • rebase主题分支到新的主人头上
  • 针对主人的rebase主题(因此主题从主人头开始),将主人带到我的主题头

我目前的做法如下:

git checkout master
git rebase master topic_1
git rebase topic_1 topic_2
git checkout master
git rebase topic_2
git branch -d topic_1 topic_2
Run Code Online (Sandbox Code Playgroud)

有更快的方法吗?

git git-rebase git-remote

22
推荐指数
3
解决办法
2万
查看次数

用setuid运行git'post-receive'钩子失败了

我有一个git存储库,需要以sudo的形式运行post-receive hook.我编译为测试它的二进制文件如下所示:

#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>

int main() {
   int ret;
   ret = setuid(geteuid());
   if(!ret) {
      fprintf(stderr, "error setting uid %d \n", ret);
   }       
   system("[...command only sudo can access...]");

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

geteuid()检索的所有者ID post-receive,然后试图对setuid.当与任何用户(包括超级用户)一起运行时,它以root身份正确运行脚本.但是,当由git hook触发时,系统无法设置uid.我试过运行chmod u+s post-receive 我也尝试了一些其他配置,但我的想法已经用完了.除非git触发它,否则它会在所有情况下都有效?

顺便说一句,平台Ubuntu Server 9.04(2.6.28-15),git1.6.0.4,gcc版本4.3.3(Ubuntu 4.3.3-5ubuntu4)

c++ git permissions ubuntu setuid

5
推荐指数
1
解决办法
1025
查看次数

标签 统计

git ×2

c++ ×1

git-rebase ×1

git-remote ×1

permissions ×1

setuid ×1

ubuntu ×1