在进行"简单"合并(一个没有冲突)后,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将显示差异(分别使用新版本和所有父版本之间的成对差异),但我更愿意在相应的列中使用+/-标记的差异,如组合模式.
显然,x86(可能还有很多其他指令集)将除法运算的商和余数都放在不同的寄存器中.
现在,我们可以信任编译器来优化这样的代码,只使用一次调用来划分:
( x / 6 )
( x % 6 )
Run Code Online (Sandbox Code Playgroud)
他们可能会这样做.仍然,任何语言(或图书馆,但主要是寻找语言)支持同时给出除法和模数结果吗?如果是这样,它们是什么,语法是什么样的?
所有人都喜欢
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) 我经常使用普通的
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) 我在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)