小编Sam*_*iao的帖子

如何修改指定的提交?

我通常会提交一份提交列表以供审核.如果我有以下提交:

  1. HEAD
  2. Commit3
  3. Commit2
  4. Commit1

...我知道我可以修改头部提交git commit --amend.但是我怎么能修改Commit1,因为它不是HEAD提交?

git git-rewrite-history

2077
推荐指数
15
解决办法
69万
查看次数

如何显示提交的内容?

我知道的一种愚蠢的方式是:

git diff commit-number1 commit-number2
Run Code Online (Sandbox Code Playgroud)

有更好的方法吗?

我的意思是我想知道commit1本身,我不想在它之前添加commit2作为参数.

git

250
推荐指数
5
解决办法
16万
查看次数

如何制作vi重绘屏幕?

我用的时候

git commit --amend
Run Code Online (Sandbox Code Playgroud)

它会进入一个vi窗口让我输入提交的注释,问题是vi windows会显示前shell背景中的一些脏字符.所以我想知道如何让vi重新加载或重绘屏幕以使屏幕正常.

到目前为止,我尝试重置终端和Ctrl + L,它的工作原理,但我不知道这种情况有最好的答案吗?

git vim

105
推荐指数
3
解决办法
5万
查看次数

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

如何将其他文件的内容加载到Vim中的当前文件?

作为标题,任何方便的方式?

我特别需要一些cvs/git commit或sendmail来加载模板注释.我认为这是一个vi环境,而不是Vim.

vim

49
推荐指数
1
解决办法
3万
查看次数

可以使用静态链接库来构建共享库吗?

我可以使用带有静态链接的gcc构建可执行文件:

gcc -static xxx.c -o xxx

所以我可以在没有任何外部依赖库的情况下运行xxx.

但是,如果我想构建没有外部依赖库的共享库呢?我的意思是我希望共享库静态链接其外部引用.

c linux compiler-construction gcc

13
推荐指数
1
解决办法
1万
查看次数

Tcp连接挂起CLOSE_WAIT状态

客户端首先关闭套接字,当服务器没有太多数据时,tcp连接关闭就好了:

FIN -->
   <-- ACK
   <-- FIN, ACK
ACK -->
Run Code Online (Sandbox Code Playgroud)

当服务器忙于发送数据时:

FIN -->
    <-- ACK,PSH
RST -->
Run Code Online (Sandbox Code Playgroud)

并且服务器连接进入CLOSE_WAIT状态并在那里挂了很长时间.

这有什么问题?客户相关或服务器相关?这种情况发生在Redhat5上,用于本地套接字.

文章说说为什么"RST"是送的,但我不知道为什么停留在CLOSE_WAIT服务器的连接,不发送一个FIN出来.

[编辑]我忽略了最重要的信息,这发生在qemu的slirp网络仿真上.这似乎是处理密切连接的slirp bug的问题.

linux network-programming tcp qemu network-protocols

11
推荐指数
1
解决办法
1万
查看次数

静态成员的多重定义?

无法链接以下两个文件,当我删除"static"关键字时,则没关系.用g ++测试.用readelf检查对象文件,静态成员似乎被导出为全局对象符号......我认为它应该是一个本地对象......?

static1.cpp

class StaticClass
{
public:

    void    setMemberA(int m)   { a = m;    }   
    int     getMemberA() const  { return a; }

private:
    static  int     a;  

};
int StaticClass::a = 0;
void first()
{
    StaticClass statc1;
    static1.setMemberA(2);
}
Run Code Online (Sandbox Code Playgroud)

static2.cpp

class StaticClass
{
public:

    void    setMemberA(int m)   { a = m;    }   
    int     getMemberA() const  { return a; }

private:
    static  int     a;  

};
int StaticClass::a = 0;
void second()
{
    StaticClass statc1;
    static1.setMemberA(2);
}
Run Code Online (Sandbox Code Playgroud)

有错误信息:

/tmp/ccIdHsDm.o:(.bss+0x0):`StaticClass :: a'的多重定义

c++

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

如何合并另一个分支的头部提交?

通常我在master分支上工作,我做了一些提交,然后推送它.

然后我还需要将这些提交推送到其他分支.

通常,我会这样做:

$ git checkout another-branch
$ git cherry-pick commit1
$ git cherry-pick commit2
...
$ git cherry-pick commitn
$ git push
Run Code Online (Sandbox Code Playgroud)

某种愚蠢的,无论如何我可以从主分支的头部合并一些提交,所以我不必费心去挑选一个一个.

git

7
推荐指数
1
解决办法
7767
查看次数

如何忽略struct声明并仅考虑cscope中的定义?

我总是使用vim + cscope检查符号定义,我发现cscope总是采用如下声明:

struct sk_buff;
Run Code Online (Sandbox Code Playgroud)

作为一个定义,它使vim始终显示一个长列表文件来选择.的确,我只想要这个定义:

struct sk_buff {
  ...
};
Run Code Online (Sandbox Code Playgroud)

似乎ctags可以解决这个问题,但cscope可以解决这个问题吗?或者有些事我错了.

我检查了cscope源代码,我发现很难从头开始修改lex和yacc源代码.

vim cscope

6
推荐指数
1
解决办法
2005
查看次数