我错过了什么.我曾经使用过Mercurial,并会查看回购的修订历史记录hg log.简单:显示在回购中所做的所有更改集.
现在我正在使用git.我对学习新工具感到非常兴奋,但我对我所看到的东西感到困惑git log.我做了一些更改并做了一些提交.另一个人也创建了一个修订版并且已经提交了.我从他的存储库中取出.我做了一个git log和他的变更集(可能在git中称为"commit")不在列表中.如果我明确列出他的哈希值(即git log <hash>),它会显示在顶部.因此,它是在我的回购,但我不明白Git是如何决定告诉我什么,当我把它做git log.
我看一下git help log,但它在描述中说"它显示了提交日志".从我的角度来看,这是不正确的.或者可能不完整,因为实际上它显示了它们的一些子集.但我不知道它是什么子集,也不知道它如何决定展示什么.
有人可以git log向我解释一下吗?
更新
顺便说一句:我尝试过的第一件事就是 - 所有,我现在看到很多人都提出这个建议.但这也没有显示出来:
$ git log | grep fb2a17c5fb08498e7f2ab364931fddc379be106f
$ git log --all | grep fb2a17c5fb08498e7f2ab364931fddc379be106f
$ git log fb2a17c5fb08498e7f2ab364931fddc379be106f | grep fb2a17c5fb08498e7f2ab364931fddc379be106f
commit fb2a17c5fb08498e7f2ab364931fddc379be106f
Run Code Online (Sandbox Code Playgroud) 我是颠覆的新手.在过去的一个月里,我做了一些改变,并将它们合并到了主干.一切似乎都很好 - 我的变化按预期传播.但是今天我重新阅读了关于合并的内容并看到了这一点,在将您的更改合并到主干时说了以下内容:
现在,使用svn merge和--reintegrate选项将分支更改复制回主干.
以后几段:
注意这次我们使用了--reintegrate选项.该选项对于将分支中的更改重新集成到其原始开发线中至关重要 - 不要忘记它!
我想我第一次没有仔细阅读过的东西.
所以,我之前的合并回到trunk后似乎犯了一个错误,因为我没有使用--reintegrate选项.这有什么后果?有什么我需要解决的吗?
如果它有用,我的工作流程看起来像这样:
我正在尝试返回一个元组,其中一个元素是std::unique_ptr.我想将所有权转移unique_ptr给来电者.我该怎么做呢?
#include <tuple>
#include <memory>
#include <iostream>
using namespace std;
class B
{
public:
B(int i) : i_(i) {}
int getI() const { return i_; }
private:
int i_;
};
tuple<unique_ptr<B>, int>
getThem()
{
unique_ptr<B> ptr(new B(10));
return make_tuple(ptr, 50);
}
int
main(int argc, char *argv[])
{
unique_ptr<B> b;
int got = 0;
tie(b, got) = getThem();
cout << "b: " << b->getI() << endl;
cout << "got: " << got << endl;
return 0;
} …Run Code Online (Sandbox Code Playgroud) 我正在使用argparse,我想用破折号指定位置参数。argparse 似乎让我这样做。事实上,它显示在 parse_args() 的命名空间中,但我不知道如何引用相应的值。这是一个最小的示例(注意“a-string”中的破折号):
#!/usr/bin/env python3
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('a-string', help='A string')
args = parser.parse_args()
# AttributeError: 'Namespace' object has no attribute 'a_string'
#print("Argument was: " + args.a_string)
# TypeError: 'Namespace' object is not subscriptable
#print("Argument was: " + args['a-string'])
# AttributeError: 'Namespace' object has no attribute 'a'
#print("Argument was: " + args.a-string)
# I give up. Ask StackOverflow.
Run Code Online (Sandbox Code Playgroud)
我最初想用add_argument的dest参数来解决这个问题,但如果我将 dest 添加到位置参数,我会得到“ValueError:dest 为位置参数提供了两次”。我如何引用这个位置参数的值?
在我以前工作的地方,我们使用Mercurial进行版本控制.我有一份新工作,我们在那里使用Subversion.我是Subversion的新手.
我发现自己想知道自从我在远程仓库结帐后已经检查了什么.在Mercurial中,我会使用hg in.这将显示远程可用的变更集集,但不会显示在我的本地仓库中.我如何在Subversion中做这样的事情?也就是说,如何找到自上次合作/更新以来所做的更改?
从我的阅读,看起来svn更新使用了很多,但我不希望我的工作副本被修改与谁知道什么.我想在拉动之前看看那里有什么(如果有的话).
谢谢您的帮助.
我有一个变量,其地址作为第四个参数传递给setsocketopt。请注意,此参数被声明为常量指针 ( const void *optval)。
在我提交供审查的补丁中,我将该变量的声明更改为 static constexpr。此更改的审阅者对此表示担忧:他认为是否始终可以获取 constexpr 的地址是值得怀疑的。他建议我将其设为常量。在谷歌搜索后,我找不到太多关于 constexpr 变量地址的信息以及对此的担忧。有人可以解释一下与 constexpr 变量的地址有关的保证以及使用它的注意事项(如果有)吗?
如果它有帮助,这里是代码(我添加的static constexpr,这只是int之前的代码):
static constexpr int ONE = 1;
setsockopt(socket_fd, IPPROTO_TCP, TCP_NODELAY, &ONE, sizeof(ONE));
Run Code Online (Sandbox Code Playgroud)
谢谢!
有没有办法从std :: map指向构造函数?我想用我想要使用的代码执行以下操作,#if 0但我似乎无法使其工作:
#include <map>
#include <functional>
using namespace std;
class Base { };
class A : public Base { };
class B : public Base { };
enum class Type { A, B, };
#if 0
using type_map_t = std::map<Type, std::function<Base*()>>;
type_map_t type_map = {
{Type::A, &A::A},
{Type::B, &B::B},
};
#endif
Base*
getBase(Type t)
{
#if 0
auto constructor = type_map[t];
return constructor();
#else
switch(t)
{
case Type::A:
return new A();
case Type::B:
return new B(); …Run Code Online (Sandbox Code Playgroud) 在vim中,在单词前后放置相同字符的字符命令序列是什么。我认为有办法做到这一点,但我忘记了。
说我有这个词candy,我想做到=candy=。没有比进入两次插入模式更有效的命令序列吗?
GCC 8.3给我以下警告:
error: '*((void*)& request +128)' may be used uninitialized in this function [-Werror=maybe-uninitialized]
Run Code Online (Sandbox Code Playgroud)
我想知道那个偏移量是什么成员。碰巧我有一个核心,可以像这样打印结构化数据以供请求:
(gdb) p *(Request*)request
Run Code Online (Sandbox Code Playgroud)
这将打印出Request的成员,但是有很多,并且从视觉上我并不明显,根据编译器警告,哪个成员的偏移量为128。这不是我第一次尝试在gdb中查找与对象开始位置有一定偏移的成员。通常x/136bx request,在这种情况下,我会尝试通过手动找出问题,然后比较两个输出。但是我想知道:是否有一种方法可以告诉gdb为它以结构化方式打印的每个成员打印偏移量?也就是说,它既可以打印结构化表示形式,又可以为每个成员添加偏移量注释?或者,如果不是那样,相对于打印原始字节并尝试查找该偏移量的字节与哪个成员对齐,是否有一种更聪明的方式让我找到该偏移量的成员?
我正在通过反汇编gdb输出分析核心验尸。我对此并不陌生,所以我对自己正在看的东西的理解仍在不断增长。对我来说,一个直接的困惑是,当我在不同的帧之间浏览并查看反汇编输出时,我看不到callq命令正在运行,正如我对所有非帧0帧所期望的那样。导致第0帧的每个帧都不应该调用函数吗?
(gdb) f 0
(gdb) disassemble
...
=> 0x0000000001b0af10 <+16>: mov (%rdi),%rdx
...
End of assembler dump.
(gdb) info registers rdi
rdi 0x0 0
Run Code Online (Sandbox Code Playgroud)
很有道理:崩溃是由于ptr取消引用无效而发生的。现在,让我们一举成名,然后在此处查看反汇编输出:
(gdb) up
(gdb) disassemble
...
=> 0x0000000001b1c01b <+315>: test %al,%al
...
Run Code Online (Sandbox Code Playgroud)
什么?上面的框架正在运行测试?它不应该调用在第0帧中反汇编的函数吗?我有什么误会?
这是从GCC 4.8编译C ++代码生成的x64程序集。