小编Til*_*gel的帖子

即使每个更改的文件都与父母之一同意,如何"git show"合并提交与组合diff输出?

在进行"简单"合并(一个没有冲突)后,git show通常只显示类似的内容

commit 0e1329e551a5700614a2a34d8101e92fd9f2cad6 (HEAD, master)
Merge: fc17405 ee2de56
Author: Tilman Vogel <email@email>
Date:   Tue Feb 22 00:27:17 2011 +0100

Merge branch 'testing' into master
Run Code Online (Sandbox Code Playgroud)

这是因为,对于合并,git show使用组合的diff格式,该格式省略了与任一父版本一致的文件.

有没有办法强制git仍然显示组合差异模式的所有差异?

git show -m将显示差异(分别使用新版本和所有父版本之间的成对差异),但我更愿意在相应的列中使用+/-标记的差异,如组合模式.

git merge

175
推荐指数
6
解决办法
10万
查看次数

同时划分并获得剩余?

显然,x86(可能还有很多其他指令集)将除法运算的商和余数都放在不同的寄存器中.

现在,我们可以信任编译器来优化这样的代码,只使用一次调用来划分:

( x / 6 )
( x % 6 )
Run Code Online (Sandbox Code Playgroud)

他们可能会这样做.仍然,任何语言(或图书馆,但主要是寻找语言)支持同时给出除法和模数结果吗?如果是这样,它们是什么,语法是什么样的?

x86 modulo divide

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

如何在QString :: arg()的参数中处理"%1"?

所有人都喜欢

QString("Put something here %1 and here %2")
    .arg(replacement1)
    .arg(replacement2);
Run Code Online (Sandbox Code Playgroud)

但是只要你有最微小的机会replacement1实际包含%1甚至是%2任何地方,事情就会变得痒痒.然后,第二个QString::arg()将仅替换重新引入%1或两个%2事件.无论如何,你不会得到"%1"你可能想要的文字.

是否有任何标准技巧可以克服这个问题?

如果你需要一个例子来玩,请拿这个

#include <QCoreApplication>
#include <QDebug>

int main()
{
    qDebug() << QString("%1-%2").arg("%1").arg("foo");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这将输出

"foo-%2"
Run Code Online (Sandbox Code Playgroud)

代替

"%1-foo"
Run Code Online (Sandbox Code Playgroud)

可能是预期的(不是).

    qDebug() << QString("%1-%2").arg("%2").arg("foo");
Run Code Online (Sandbox Code Playgroud)

"foo-foo"
Run Code Online (Sandbox Code Playgroud)

    qDebug() << QString("%1-%2").arg("%3").arg("foo");
Run Code Online (Sandbox Code Playgroud)

"%3-foo"
Run Code Online (Sandbox Code Playgroud)

qstring qt placeholder string-formatting

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

当你对检索到的值的表达式进行分支时,是否存在像`if(Value*value = getValue())`这样的习惯用法?

我经常使用普通的

if (Value * value = getValue())
{
    // do something with value
}
else
{
    // handle lack of value
}
Run Code Online (Sandbox Code Playgroud)

现在,我也经常这样做

QString error = someFunctionReturningAnErrorString(arg);
if (!error.isEmpty())
{
     // handle the error
}
// empty error means: no error
Run Code Online (Sandbox Code Playgroud)

这一切都很好,但我希望error变量的范围是if-block.那有一个很好的习语吗?显然,我可以将整个部分包装在另一个块中.

显然,这不起作用:

if(QString error = someFunctionReturningAnErrorString(arg), !error.isEmpty())
{
    // handle the error
}
// empty error means: no error
Run Code Online (Sandbox Code Playgroud)

不幸的是(但有充分的理由)QString无法转换为bool,所以这也不起作用:

if(QString error = someFunctionReturningAnErrorString(arg))
{
    // handle the error
}
// empty error …
Run Code Online (Sandbox Code Playgroud)

c++ qstring qt

13
推荐指数
2
解决办法
549
查看次数

在git中分离头

我在git中有一个独立的头.我没有兴趣做任何提交或保存任何更改,我只想去我的分支机构的头部位置.我已经尝试过他的命令,但它不起作用:

 git checkout MyBranch
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

----更新

当我试图结账时,我收到此消息:

 $ git checkout -f master
 Switched to branch 'master'
 Your branch is behind 'origin/master' by 6 commits, and can be fast-forwarded.
Run Code Online (Sandbox Code Playgroud)

---更新2它说这是一些变化,我该如何删除它们?

$ git merge origin/master
Updating fb5972a..28c2849
error: The following untracked working tree files would be overwritten by merge:
  ---
Please move or remove them before you can merge.
Aborting
Run Code Online (Sandbox Code Playgroud)

我怎么能丢弃它们?

这些命令不起作用:

$ git checkout -- .


$ git stash save --keep-index
No local changes to save
Run Code Online (Sandbox Code Playgroud)

git

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

标签 统计

git ×2

qstring ×2

qt ×2

c++ ×1

divide ×1

merge ×1

modulo ×1

placeholder ×1

string-formatting ×1

x86 ×1