44695

[code]

    * C.txt追加
    |
    * B.txt追加
    |
    * A.txt追加
    |
    
[/code]

順番にA,B,Cのテキストファイルを追加した履歴があります。ここで、B.txtの追加前に戻して、A.txtだけが存在するような状況に戻すにはどうすればよいでしょうか？
`revert` だと元に戻すことができません。

[code]

    * A.txtだけが存在するコミット
    |
    * C.txt追加
    |
    * B.txt追加
    |
    * A.txt追加
    |
    
[/code]

このような状態にしたいです。


CC BY-SA 4.0
2018-06-11T11:49:44.003
44692
2018-06-11T12:49:45.973
2018-06-11T12:11:57.403
19687
19687
question
git github
GitHubでファイルの追加前に戻したい


`revert` は `<commit>..<commit>` の形式で複数のコミットを指定できます。更に `--no-commit`
オプションを付けることで一旦コミットせずに revert してみて、確認してからコミットできます。

例:

[code]

    git revert --no-commit HEAD~2..HEAD
    git commit
    
[/code]

### 参考

  * [git-revert](https://git-scm.com/docs/git-revert) \-- Git Documentation
  * [Specifying Revisions](https://git-scm.com/docs/gitrevisions#_specifying_ranges) \-- gitrevisions -- Git Documentation


CC BY-SA 4.0
2018-06-11T12:29:41.973
44695
2018-06-11T12:36:01.710
2018-06-11T12:36:01.710
19110
19110
44692
answer


既にB.txt,
C.txtを追加した際のコミットを公開リポジトリ(GitHub)に対してpush済みの場合には`revert`で打ち消した記録を残すべきですが、変更がまだローカルにとどまっている場合には`reset`を使う方法もあります。

[code]

    $ git reset --hard HEAD~2
    
[/code]


CC BY-SA 4.0
2018-06-11T12:49:45.973
44696
2018-06-11T12:49:45.973
3060
44692
answer