小编Mal*_*ous的帖子

如何'git pull'成一个不是现在的分支?

当您git pullmaster分支上运行时,它通常会从中拉出origin/master.我是在一个叫不同的分支newbranch,但我需要运行,做了一个命令,git pullorigin/mastermaster,但我不能运行git checkout更改所选分支,直到后拉完成.有没有办法做到这一点?

为了给出一些背景知识,存储库存储一个网站.我newbranch通过切换网站对其进行了一些更改并进行了部署newbranch.现在这些更改已合并到上游master分支,我也试图将网站切换回master分支.在这一点上,newbranch并且origin/master是相同的,但是master落后origin/master并且需要更新.问题是,如果我采用传统方式:

$ git checkout master
   # Uh oh, production website has now reverted back to old version in master
$ git pull
   # Website is now up to date again
Run Code Online (Sandbox Code Playgroud)

我需要实现与上面的相同(git checkout master && git pull),但是在此过程中不需要将工作目录更改为早期版本.

git branch git-branch

116
推荐指数
5
解决办法
6万
查看次数

你怎么告诉git只存储索引?

我刚刚使用"git add -p"为索引添加了一堆更改,我才意识到我错过了一个应该进入上一次提交的更改.

我现在不能提交--amend因为我已经将所有这些新的更改添加到索引中,并且我不想使用'git reset'将它们全部从索引中删除,因为它需要很长时间才能添加它们又回来了.

我需要的是像'git stash'这样只会隐藏索引的东西 - 它应该只保留工作文件.然后我可以存储索引,添加缺少的更改,提交它,然后弹出存储并使我的索引恢复原样.

它看起来不像'git stash'能够做到这一点,但我错过了什么吗?谢谢!

git

58
推荐指数
9
解决办法
2万
查看次数

工厂功能的最佳智能指针返回类型是什么?

关于智能指针和新的C++ 11/14功能,我想知道具有这些功能的类的最佳实践返回值和函数参数类型是什么:

  1. 一个工厂函数(在类之外),它创建对象并将它们返回给类的用户.(例如,打开文档并返回可用于访问内容的对象.)

  2. 实用程序函数接受来自工厂函数的对象,使用它们,但不取得所有权.(例如,计算文档中单词数量的函数.)

  3. 在返回对象后保持对对象引用的函数(如获取对象副本的UI组件,以便它可以根据需要在屏幕上绘制内容.)

工厂功能的最佳返回类型是什么?

  • 如果它是一个原始指针,用户将delete正确地使用它,这是有问题的.
  • 如果它返回a,unique_ptr<>则用户无法共享它.
  • 如果它是一个shared_ptr<>那么我将不得不传遍各地的shared_ptr<>类型?这就是我现在正在做的事情,它导致了问题,因为我正在获取循环引用,防止对象被自动销毁.

效用函数的最佳参数类型是什么?

  • 我想通过引用传递将避免不必要地增加智能指针引用计数,但这有什么缺点吗?想到的主要原因是它阻止我将派生类传递给带有基类类型参数的函数.
  • 有没有什么方法可以让调用者明白它不会复制对象?(理想情况下,如果函数体尝试复制对象,代码将无法编译.)
  • 有没有办法使它独立于使用的智能指针类型?(也许拿一个原始指针?)
  • 是否有可能有一个const参数来说明该函数不会修改对象,而不会破坏智能指针的兼容性?

保持对象引用的函数的最佳参数类型是什么?

  • 我猜shared_ptr<>是这里唯一的选择,这可能意味着工厂类必须返回一个shared_ptr<>,对吗?

这里有一些代码可以编译并希望说明要点.

#include <iostream>
#include <memory>

struct Document {
    std::string content;
};

struct UI {
    std::shared_ptr<Document> doc;

    // This function is not copying the object, but holding a
    // reference to it to make sure it doesn't get destroyed.
    void setDocument(std::shared_ptr<Document> newDoc) {
        this->doc = newDoc;
    }
    void redraw() {
        // …
Run Code Online (Sandbox Code Playgroud)

c++ smart-pointers const-correctness c++11

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

GDB:Ctrl + C不像通常那样中断进程,而是终止程序

通常,当您通过GDB运行程序时,您可以按Ctrl + C来中断它,例如,如果它陷入无限循环并且您想要获得回溯.

我正在调试一个程序(xmms2d,因为它发生),但只在这个程序中,当我按下Ctrl + C它被视为GDB没有运行 - 程序干净地关闭,然后GDB告诉我程序正常退出.

如何恢复常用的GDB行为,Ctrl + C会中断程序?或者是否存在另一种在GDB中产生相同反应的方法,就像Ctrl + C通常那样?

gdb signals

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

使curl向stderr发送错误,将其他所有内容发送到stdout

有没有办法告诉curl输出错误到stderr,以及stdout的其他一切?

原因是我每天晚上都使用命令行中的curl(实际上是一个cronjob)将文件上传到FTP站点.不幸的是因为curl在stderr上输出状态信息,所以当没有任何实际出错时,我收到一封关于错误的电子邮件.(我正在将stdout重定向到日志文件,但是保持stderr不变,这样如果有任何输出,cron会通过电子邮件发送给我.)

有一些选项可以使curl保持静默,或者将所有内容输出到stdout,但是这两种选择都可以防止错误出现在stderr上 - 这意味着当我想知道实际出现错误时,我不会收到电子邮件.

那么有没有办法让curl只在stderr上输出错误,但是在stdout上保持正常输出不变?

curl stdout stderr

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

管道输出到两个不同的命令

可能重复:
osx/linux:管道分为两个进程?

有没有办法将输出从一个命令输入到另外两个命令的输入中,同时运行它们?

像这样的东西:

$ echo 'test' |(cat) |(cat)
test
test
Run Code Online (Sandbox Code Playgroud)

我想这样做的原因是我有一个程序从USB SDR设备接收FM无线电信号,并输出音频作为原始PCM数据(如.wav文件,但没有标题.)由于信号不是音乐但POCSAG寻呼机数据,我需要将其传输到解码器程序以恢复寻呼机文本.但是我也想听信号,所以我知道是否有任何数据进入.(否则我无法判断解码器是否损坏或者没有广播数据.)因此,除了将数据传输到寻呼机解码器之外,我还需要将相同的数据传输到play命令.

目前我只知道如何做一个 - 将其传输到解码器并静默读取数据,或将其传输到play并听到它而不会看到任何解码文本.

如何将相同的数据传输到两个命令,以便我可以阅读文本并听到音频?

我无法使用tee,因为它只将重复数据写入文件,但我需要实时处理数据.

bash pipe tee

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

你怎么告诉git永久忽略文件中的变化?

我正在使用一个存储网站数据的git存储库.它包含一个.htaccess文件,其中包含一些适用于生产服务器的值.为了让我在网站上工作,我必须更改文件中的一些值,但我从不想提交这些更改,否则我将破坏服务器.

由于.gitignore不适用于跟踪文件,我使用"git update-index --assume-unchanged .htaccess"来忽略我在文件中的更改,但是这只能在切换分支之前有效.一旦您更改回原始分支,您的更改就会丢失.

有没有办法告诉git忽略文件中的更改在更改分支时不管它?(就像文件未被跟踪一样.)

git

18
推荐指数
2
解决办法
7229
查看次数

Autoconf:如何将安装路径导入config.h

我的程序需要在运行时加载一些文件,这些文件将被安装到任何给定的文件夹中 ./configure --datadir=/somewhere

由于我的程序需要知道此文件夹在运行时的位置,我需要在某处#define一个符号,以便C代码可以作为字符串访问路径.

我目前通过修改编译器标志来做到这一点:

AM_CPPFLAGS = -DDATA_PATH=\"$(pkgdatadir)\"
Run Code Online (Sandbox Code Playgroud)

但是,由于配置脚本已经生成了一个包含其他内容的config.h文件,我希望将符号显示在那里.

那可能吗?

autoconf

14
推荐指数
3
解决办法
3106
查看次数

如何嵌套 Jest 测试

我遇到一种情况,我需要创建一个调用函数并检查其返回值的测试。它返回一个对象,因此我必须迭代它并检查 100 个左右的值的正确性。如果其中之一失败了,我想知道是哪一个。

我无法弄清楚如何使用普通 Jest 来执行此操作,以便测试是独立的,并且在失败时我会收到有意义的错误消息。

例如,我可以这样做:(用于说明的伪代码,而不是实际代码)

describe('Test for function A', () => {
    beforeAll('Create class instance', () => {
        this.inst = new MyClass();
    });

    test('Call function with no parameters', () => {
        const value = this.inst.run();

        for (each key=value) {
            expect(value).toBe(correct); // on failure, doesn't tell me the key, only the value
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

这样做的问题是,如果value不是correct,那么错误消息不是很有帮助,因为它没有告诉我 100 个值中的哪一个有问题。

我无法更改为,test.each()因为然后我收到一条错误消息,指出我有test()不允许的嵌套调用。

如果我使用内部test()并将父级更改test()为,describe()那么代码将变为:

describe('Test for function A', () …
Run Code Online (Sandbox Code Playgroud)

javascript jestjs

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

定义编译时常量的最佳方法

在C++ 11中定义简单常量值的最佳方法是什么,这样就没有运行时惩罚?例如:(不是有效代码)

// Not ideal, no type, easy to put in wrong spot and get weird errors
#define VALUE 123

// Ok, but integers only, and is it int, long, uint64_t or what?
enum {
     Value = 123
};

// Could be perfect, but does the variable take up memory at runtime?
constexpr unsigned int Value = 123;

class MyClass {
    // What about a constant that is only used within a class, so
    // as not to pollute the …
Run Code Online (Sandbox Code Playgroud)

c++ constants idiomatic constexpr c++11

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