gitで直前のpushを取り消すコマンド

gitで間違ったコードをpushしてしまった場合は次のようなコマンドで直前のcommitを取り消すことができるそうです。

$ git reset --hard HEAD^
$ git push -f

取り消しはしない方が良いという話もあるようですが、公開しているサーバーで間違ったメールアドレスやユーザー名でpushしてしまった場合はこんな感じで削除できるようです。

複数人で作業している場合は注意して使ってください。

.gitignoreの内容が反映されない場合

.gitignoreに書いたのに無視されない(.gitignoreの内容が反映されない)場合は

$ git rm --cached path/to/file

を試してみると良いそうです。

.gitignoreへの記述前にインデックスされたファイルについては無視されないようになっているみたいです。

リンク

[Git] .gitignoreの仕様詳解 – Qiita
https://qiita.com/anqooqie/items/110957797b3d5280c44f

C#のLINQで最小値の要素を取り出す方法

C#のLINQで最小値の要素を取り出す方法をいくつか調べてみました。

Aggregateを使う場合

using System;
using System.Collections.Generic;
using System.Linq;

public class Example1
{
  struct Example
  {
    public string name;
    public int value;
  }

  static public void Main ()
  {
    List list = new List<Example> {
      new Example { name = "aaa", value = 321 },
      new Example { name = "bbb", value = 432 },
      new Example { name = "ccc", value = 123 }
    };

    Example e = list.Aggregate((a, b) => a.value < b.value ? a : b);
    Console.WriteLine("{0}: {1}", e.name, e.value);
  }
}

実行結果

ccc: 123

OrderByとFirstを使う場合

using System;
using System.Collections.Generic;
using System.Linq;

public class Example2
{
  struct Example
  {
    public string name;
    public int value;
  }

  static public void Main ()
  {
    List list = new List<Example> {
      new Example { name = "aaa", value = 321 },
      new Example { name = "bbb", value = 432 },
      new Example { name = "ccc", value = 123 }
    };

    Example e = list.OrderBy(e => e.value).First();
    Console.WriteLine("{0}: {1}", e.name, e.value);
  }
}

実行結果

ccc: 123

リンク

Enumerable.Aggregate Method (System.Linq) | Microsoft Docs
https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.aggregate?view=netframework-4.7.2