# git restore

不要な差分を`git add`にてstagingに追加してしまった場合は、`git restore`を使うことで、stagingから取り除くことができます。

以下のコマンドにて、a.txtを編集し、stagingに追加しましょう。

```bash
echo world >> a.txt
```

```bash
git add .
```

`git status`にてstagingに追加されていることが確認できるかと思います。

ここで、`git restore --staged`を使います。`git add`と同様に、特定のファイルのみを指定できますし、`.`(ドット)にて、stagingにある全てのファイルを指定することができます。

```bash
git restore --staged a.txt
```

`git status`にて確認すると、stagingから取り除かれたことが確認できるかと思います。

また、commitを取り消したい場合も`git restore`を使用します。まずは、上記の変更を`git add`、`git commit`しましょう。

```bash
git add .
```

```bash
git commit
```

メッセージは以下とします。

```
間違ったコミット
```

上記のcommitを取り消したい場合は、二種類の方法があるのですが、

1つ目は、commit自体を削除する方法で、こちらは`git reset`を使うことでできますが、今回は紹介しません。

2つ目はcommitを打ち消すようなcommitを作成する方法で、こちらをやっていきます。

以下のコマンドを叩きます。--sourceオプションにて、HEAD^と指定していますがここでは詳しくは説明しません。要は直前のcommitを指定していると思ってください。

そして、そのcommit時点のすべてのファイルを指定するため、`.`(ドット)と記載します。

```bash
git restore --source=HEAD^ .
```

上記のコマンドにて、上記で追加したテキストが削除された状態になったかと思います。

こちらを`git add`、`git commit`していきましょう。

```bash
git add .
```

```bash
git commit
```

メッセージは以下とします。commitを打ち消すようなcommitを作り、versionを元に戻すことを**revert**と言います。

```
revert 間違ったコミット
```
