小编Tim*_*all的帖子

如何恢复上次提交并将其从历史记录中删除?

我做了一个提交并且还原了

git revert HEAD^
Run Code Online (Sandbox Code Playgroud)

只是git日志

?  git:(master) git log
commit 45a0b1371e4705c4f875141232d7a97351f0ed8b
Author: Daniel Palacio <danpal@gmail.com>
Date:   Tue Jan 17 16:32:15 2012 -0800

    Production explanation
Run Code Online (Sandbox Code Playgroud)

但如果我做git log - 所有它仍然出现.我需要将其从历史中删除,因为它有敏感信息

git log --all
commit 5d44355080500ee6518f157c084f519da47b9391
Author: Daniel Palacio
Date:   Tue Jan 17 16:40:48 2012 -0800

    This commit has to be reset

commit 45a0b1371e4705c4f875141232d7a97351f0ed8b
Author: Daniel Palacio 
Date:   Tue Jan 17 16:32:15 2012 -0800

    Production explanation
Run Code Online (Sandbox Code Playgroud)

如何从历史记录中删除提交5d44355080500ee6518f157c084f519da47b9391?

git git-revert

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

将 unsigned int 绑定到signed int 引用是否安全?

在同事的代码中遇到类似的内容后,我无法理解为什么/如何在没有编译器警告或错误的情况下执行该代码。

#include <iostream>

int main (void)
{
    unsigned int u = 42;

    const int& s = u;

    std::cout << "u=" << u << " s=" << s << "\n";

    u = 6 * 9;

    std::cout << "u=" << u << " s=" << s << "\n";
}
Run Code Online (Sandbox Code Playgroud)

输出:

u=42 s=42
u=54 s=42
Run Code Online (Sandbox Code Playgroud)

首先,当我像这样混合有符号/无符号整数时,我希望编译器发出某种诊断。如果我尝试与 进行比较,当然会如此<。这是让我困惑的一件事。

其次,我不确定第二行输出是如何生成的。我预计 的值为s54。这是如何工作的?编译器是否创建一个匿名的、自动带符号的整数变量,分配 的值u,并将引用指向s该值?或者它正在做其他事情,比如s从引用更改为普通整数变量?

c++ reference

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

是否将一个函数返回到void"old-style-cast"?

Coverity抱怨我们的代码库中的各种函数调用都没有检查返回值.

未选中的返回值(CHECKED_RETURN)3.check_return:在不检查返回值的情况下调用Append(78次中的其他73次).

在过去,我们会简单地通过铸造回归解决了这个问题(后双重检查返回值真的不是很重要)void(如讨论这里):

(void)Foo.Append(bar);
Run Code Online (Sandbox Code Playgroud)

但是,我们正在开始启用所有警告,并将警告视为错误,因此我有点担心上面的代码会生成old-style-cast诊断.如果是这种情况,我需要将我们的代码修改为相当丑陋的格式:

static_cast<void>( Foo.Append(bar) );
Run Code Online (Sandbox Code Playgroud)

但是,gccclang似乎都可以编译这段代码(第一种形式)而不会抱怨.所以我想我的问题的最终形式是这样的:void就C风格的演员而言,是否将一个函数返回到被认为是规则的例外?或者我是否需要仔细检查我的代码并查看相关的行是否实际上没有包含在这些构建中?

c++ casting suppress-warnings

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

在UML中用实线打开箭头?

UML中带有实线的空心箭头显示了什么.它是否显示了Assossaition,其中带有尾部的类知道带有箭头的类,而箭头类不知道尾类.

java uml

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

C++ - 在打印char*时指定std :: cout的最大字符数

假设我有一个const char*,我想用std :: cout打印,但我只想要打印前X个字符.有没有办法告诉std :: cout?(不在字符串中插入终止空值或制作临时副本.)

c++ std c++17

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

误推master后如何恢复

我经常犯这个错误,我想知道是否有更好的解决方案,以及我当前的解决方案是否有风险。

这是工作流程

  1. git 结账大师
  2. git拉
  3. git 子模块更新 --init --recursive
  4. (编辑、调试、测试)
  5. git 提交 -a
  6. git push origin HEAD:refs/for/master
  7. (更多编辑、测试等)
  8. git 提交 -a
  9. 吉特克
  10. (咒骂)
  11. git rebase -i HEAD~2 # 选择并将我的两个提交压缩在一起
  12. git checkout -b 任务ID
  13. git 结账大师
  14. git rebase -i HEAD~2 # 选择前一个用户的提交,删除我自己的

我的错误是,在第 5 步的某个地方,我应该执行类似于第 12 步的操作来创建一个新分支,以使这项工作与其他任务分开,以便我可以轻松地返回到它或以所需的顺序重新设置不同的补丁或其他任何内容。相反,我将新代码推送到主分支上,大约第 10 步我意识到,这master不再指向公司已批准的最新、最好的代码版本,而是我自己的努力。因此,在将我自己的提交压缩为一个交互式的提交之后rebase,我正在执行另一项交互式操作rebase以返回master它应该在的位置——即,已经通过审核过程的其他人的工作。

编辑澄清:当我“推送到master”时,这不会将我的更改发布给其他人。有一些提交钩子魔法可以创建 Gerrit 代码审查任务,并且只有获得批准后,我的提交才会合并到远程存储库中。抱歉误导了大家。我在这里关心的只是我的本地仓库。

我的问题是双重的。就风险而言,这种做法有多糟糕?如何改进?我并不是寻求帮助来避免最初的错误。我想我只需要更加小心我要推向哪个分支。问题是如何最好地指向master先前的提交而不干扰/冒险/丢失任何东西。

git

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

有比许多嵌套“for”循环更好的东西吗?

我希望评估游戏的几种不同的潜在规则/评分系统。该游戏涉及掷三个骰子,最多掷三次。为了考虑每种可能性的结果,我迭代了九次可能的骰子掷中每一次的所有可能值。

\n

我的问题是以下强力风格编码是否是最好的方法。

\n
// get the result for each possible game\nvoid Evaluate( const ScoringSystem& sys )\n{\n    for( int d1=0; d1<6; ++d1 )\n    {\n        for( int d2=0; d2<6; ++d2 )\n        {\n            for( int d3=0; d3<6; ++d3 )\n            {\n                for( int d4=0; d4<6; ++d4 )\n                {\n                    for( int d5=0; d5<6; ++d5 )\n                    {\n                        for( int d6=0; d6<6; ++d6 )\n                        {\n                            for( int d7=0; d7<6; ++d7 )\n                            {\n                                for( int d8=0; d8<6; ++d8 )\n                                {\n                                    for( int d9=0; d9<6; ++d9 )\n                                    {\n …
Run Code Online (Sandbox Code Playgroud)

c++

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

为什么在结构中放入枚举然后使用typedef名称?

我发现在我们公司的代码中使用了以下模式.

struct Foo
{
    enum FType
    {
        TypeA,
        TypeB,
        Type_MAX
    };
};
typedef Foo::FType FooType;
[...]
FooType m_type;
Run Code Online (Sandbox Code Playgroud)

我的问题是,这有什么好处?(或者,这避免了什么问题?)要明确,我想知道他们为什么不只是......

enum FooType
{
    TypeA,
    TypeB,
    Type_MAX
};
[...]
FooType m_type;
Run Code Online (Sandbox Code Playgroud)

我不能问原来的程序员,因为他们已被重新分配,事实证明我们公司的指定主题专家实际上是我.

如果它有帮助,这个代码已经在不同的时间使用许多版本的MSVC,gcc和clang编译为不同的目标平台...所有预先C++ 11.

谁能明白为什么这样做了?如果答案结果是微不足道的话,请提前道歉.

编辑添加:这是内部使用.(当枚举是全局的时,我们的样式指南要求条目以公共前缀开头,以便将它们与其他符号区分开.)

c++ enums c++03

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

为什么两个对象在将一个对象分配给另一个对象后不相同?

我们的向量类中有一些奇怪的不当行为。它给我们上了宝贵的一课。

class Vector3D
{
    float x, y, z, w;
public:
    Vector3D( float ax, float ay, float az, float aw )
        : x(ax), y(ay), z(az), w(aw)
    {}
    Vector3D( float ax, float ay, float az ) // for when you don't care about w
        : x(ax), y(ay), z(az)
    {}

    void Assign( const Vector3D& rhs )
    {
        x = rhs.x;
        y = rhs.y;
        z = rhs.z;
        w = rhs.w;
    }
    bool operator==( const Vector3D& o )
    {
        return (x==o.x && y==o.y && z==o.z …
Run Code Online (Sandbox Code Playgroud)

c++

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

为“相邻”变量赋值时出现问题

在这段代码中,我首先描述了 int a 并为其分配了值 9,然后我声明了另一个 int b,然后我将值 3 赋予了 *(&b-1) 所以 (&b-1) 指的是 &a 然后我打印 a 的值然后它只打印 9 但是当我在代码中添加新行(第 6 行)时,即首先打印 a 然后将值 3 分配给 (&b-1) 然后它将 a 更新为 3 并打印它。那么为什么会这样呢?

#include <iostream>
using namespace std;
int main() {
    double a, b;
    a = 9;
    //cout<<&a<<" "<<a << endl ;
    *(&b - 1) = 3;
    cout << a << " " << &b - 1 << " ";
    cout << &a;
}
Run Code Online (Sandbox Code Playgroud)

c++

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

为什么我看到“与其类同名的成员函数必须是构造函数”?

我有一个有用的函数,我想将它从独立实用程序转换为 RAII 样式的帮助程序类。我对类的定义进行得很顺利,直到我粘贴函数代码并重命名它。此时函数名用红色下划线标出,工具提示说“与其类同名的成员函数必须是构造函数”。

此错误消息没有帮助。我知道我不能编写与类同名的函数。我希望这个函数是一个构造函数。为什么不是?这是怎么回事?

前:

void Useful( int Param ) // works, and is useful
{
    // do useful things
}
Run Code Online (Sandbox Code Playgroud)

后:

class Useful
{
    void Useful( int Param ) // generates error
    {
        // do useful things
    }
};
Run Code Online (Sandbox Code Playgroud)

c++ constructor compiler-errors

-2
推荐指数
1
解决办法
1745
查看次数