- 投稿日:2019-05-06T23:59:02+09:00
【Git】誤ってcommitしてすぐに戻したいとき
結論
作業メモ。結論を先に書く。
以下のコマンドをすぐに打とう。
git reset --soft HEAD^GW中にhooksでpre-commitの検証を行っているときにアホほど打ったので、覚えてしまった…。
--soft
--softだと、「commitをしなかった状態」なので、編集していたファイルは残る。つまり、「インデックスにステージングした状態」に戻す。
間違いがなくて、安心だと思います。--hard
これを
git reset --hard HEAD^
にすると、「commit自体をなかったことにして、1つ前のcommitの状態に戻す」ことになるので、commitしたファイル も消えてしまいます。
一挙にまるまるリセットしたいときは、--hard
で良いと思いますが、ちゃんと考えてからやったほうが良いでしょうね。
つまり、以下の流れを一挙にやるイメージです。
git reset --soft HEAD^
git reset HEAD .
- 対象ファイルを削除
--mixed
git reset --mixed HEAD^
は、上の箇条書きで言うところの2.に当たる部分までやるという感じです。なんだか中途半間な感じがして、あまり使わない気がします。
- 投稿日:2019-05-06T20:06:20+09:00
�【git】よく使うコマンド集(リモートレポジトリへのプッシュ)
趣旨
毎回、あれ?ここで使うgitコマンドなんだったっけ?となるので自分の忘備録としての役割も含めて記載します。
今回はリモートレポジトリへのプッシュです。リモートレポジトリにプッシュしたい時
ここではリモートレポジトリはgithub使っています。
git add
まず、ファイルなどを管理の対象として追加する必要があります。
エディターにコードを書いたのみだと「ワーキングツリー」に存在しているだけなので、
ワーキングツリーからステージエリア(インデックス)に追加します。
(ワーキングツリー→ステージエリア)$ git add .上記ならルートファイル以下全てのファイルをaddできます。
$ git add <ファイル名>特定のファイルならこちら
ex)
$ git add index.htmlgit commit
ステージエリアにあげられたファイルをローカルレポジトリに追加登録します。
このことをコミットすると言います。
(ステージエリア→ローカルレポジトリ)vimを使いたくない人は-mでメッセージの中身を記入
$ git commit -m "コメントの中身"vimを使う人は
$ git commitvimが立ち上がるので、
「i」を押してインサートモードにしてからコメントを入力します。
入力したあとは、ESCを押した後に
「:」「w」「q」で保存するか、
「:」「q」「!」で保存せずに戻ることができます。git commit したあとは、
git log でコミットしたメッセージを確認できます。$ git loggit push
最後にリモートレポジトリ(github)にプッシュします。
(ローカルレポジトリ→リモートレポジトリ)$ git push origin <ブランチ名> なので
masterにプッシュする時$ git push origin masterワーキングツリーの変更内容を取り消しする時
git addしていない変更を全部消すことができます。
$ git checkout .変更の取り消しができますが、新規追加したファイルは削除対象にならないので、別途削除しましょう。
特定のファイルのみ指定して取り消しならこちらです。
$ git checkout <ファイル名>プッシュした後にやり直ししたい時
git resetで対応する人もいますが、コミット履歴操作には危険が伴うので、
revertで対応するケースも多いようです。
直前のコミットを打ち消すコミットとなります。$ git revert HEADその後にpushします。
ワーキングツリーの変更を一時退避させる方法
ローカル(ワーキングツリー)の変更内容を退避させます。
退避させて別ブランチで一時的に作業する場合などで使います。$ git stash退避を元に戻すには以下のコマンドです。
$ git stash pop最後に
git resetについてはこの方の記事がとても参考になります。
https://qiita.com/shuntaro_tamura/items/db1aef9cf9d78db50ffe別の記事で他のgitコマンドについて書いていきます。
- 投稿日:2019-05-06T20:06:20+09:00
�【git】よく使うコマンド集(リモートレボジトリへのプッシュ)
趣旨
毎回、あれ?ここで使うgitコマンドなんだったっけ?となるので自分の忘備録としての役割も含めて記載します。
今回はリモートレポジトリへのプッシュです。リモートレボジトリにプッシュしたい時
ここではリモートレボジトリはgithub使っています。
git add
まず、ファイルなどを管理の対象として追加する必要があります。
エディターにコードを書いたのみだと「ワーキングツリー」に存在しているだけなので、
ワーキングツリーからステージエリア(インデックス)に追加します。
(ワーキングツリー→ステージエリア)$ git add .上記ならルートファイル以下全てのファイルをaddできます。
$ git add <ファイル名>特定のファイルならこちら
ex)
$ git add index.htmlgit commit
ステージエリアにあげられたファイルをローカルレポジトリに追加登録します。
このことをコミットすると言います。
(ステージエリア→ローカルレポジトリ)vimを使いたくない人は-mでメッセージの中身を記入
$ git commit -m "コメントの中身"vimを使う人は
$ git commitvimが立ち上がるので、
「i」を押してインサートモードにしてからコメントを入力します。
入力したあとは、
「:」「w」「q」で保存するか、
「:」「q」「!」で保存せずに戻ることができます。git commit したあとは、
git log でコミットしたメッセージを確認できます。$ git loggit push
最後にリモートレポジトリ(github)にプッシュします。
(ローカルレポジトリ→リモートレポジトリ)$ git push origin <ブランチ名> なので
masterにプッシュする時$ git push origin masterワーキングツリーの変更内容を取り消しする時
git addしていない変更を全部消すことができます。
$ git checkout .変更の取り消しができますが、新規追加したファイルは削除対象にならないので、別途削除しましょう。
特定のファイルのみ指定して取り消しならこちらです。
$ git checkout <ファイル名>プッシュした後にやり直ししたい時
git resetで対応する人もいますが、コミット履歴操作には危険が伴うので、
revertで対応するケースも多いようです。
直前のコミットを打ち消すコミットとなります。$ git revert HEADその後にpushします。
ワーキングツリーの変更を一時退避させる方法
ローカル(ワーキングツリー)の変更内容を退避させます。
退避させて別ブランチで一時的に作業する場合などで使います。$ git stash退避を元に戻すには以下のコマンドです。
$ git stash pop最後に
git resetについてはこの方の記事がとても参考になります。
https://qiita.com/shuntaro_tamura/items/db1aef9cf9d78db50ffe別の記事で他のgitコマンドについて書いていきます。
- 投稿日:2019-05-06T18:23:41+09:00
【Git】基本コマンド
はじめに
新しく学んだことは随時更新します。
Git initコマンド
■コマンド
git init [ディレクトリ] [オプション]
■使用例
$ git init
■意味
Gitのリポジトリを新規作成、既存のリポジトリを最初期化するために使用します。指定したディレクトリ(指定しない場合、カレントディレクトリ)も「.git」というサブディレクトリが作成されます。
中身はテンプレートファイルが置かれています。Git addコマンド
■コマンド
git add [ファイル名]
■使用例
$ git add index.html
■意味
Gitのリポジトリに追加したいファイルを選択するために使用します。Git commitコマンド
■コマンド
git commit [< options >]
■オプション
-m: コミットする際に、コメントを添えることができる。■使用例
$ git commit -m "This is an example of commit."
■意味
ローカルリポジトリにコミットするために使用します。Git resetコマンド
■コマンド
git reset [< ootions >]
■オプション
--soft: コミットのみを取り消します。直前のコミットを取り消す場合、HEAD^を使用する。
--hard: コミットと変更を取り消します。直前のコミットを取り消す場合、HEAD^を使用する。■使用例
$ git reset --soft HEAD^
※windowsOS
$ git reset --soft "HEAD^"
■意味
「コミットメッセージを間違えた」
「間違えてコミットしてしまった」
そのようなときは、git resetコマンドでコミットをなかったことにできます。
(??ローカルリポジトリだから出来る??)Git remoteコマンド
■コマンド
git remote [< options >] [リモート名] [リモートリポジトリのURL]
■オプション
add: リモートリポジトリのURLを任意の名前に設定できます。
remove: addにて設定した名前を削除します。
rename: 名前を変更できます。■使用例
$ git remote add origin https://github.com/xxxx/yyyy.git
■意味
リモートリポジトリのURLをわかりやすいような名前にしたり、その名前を削除したり
リモートリポジトリのURLを管理するために使用します。Git pushコマンド
■コマンド
git push [リモート名] [ブランチ名]
■使用例
$ git push origin master
■意味
ローカルリポジトリにコミットしたファイルをリモートリポジトリにアップロードするために使用します。Git pullコマンド
■コマンド
git pull [リモート名] [ブランチ名]
■使用例
$ git pull origin master
■意味
リモートリポジトリにアップロードされているファイルをダウンロードするために使用します。
- 投稿日:2019-05-06T15:23:53+09:00
Github の更新
- 投稿日:2019-05-06T00:30:48+09:00
git revertでpush済みのcommitの内容を取り消す
git revertで該当のMergeCommitのみを取り消す
$ git revert -m 1 [取り消したい該当commit id]-> これで該当のコミットのみを取り消すcommitが作られる(戻されるわけではなく、ソース上で消す変更が行われる)
後はpushしてマージするだけ。