ベスパリブ

ベスパもってないです。バイク買いました。

Gitコマンド備忘録

この記事は都度更新します。

branch

ブランチを確認する
*が付いているものが現在のブランチ

ブランチの確認

git branch
* master
  branchA
  branchB

clone

git clone [リポジトリのURL]

で、リポジトリのフォルダをダウンロードできる。
cloneとダウンロードって何が違うの?と思っていたが、おそらく何も違わない。

checkout

checkoutでできることは大きく2つ。
・ブランチの切り替え
・ファイルを特定の状態に戻す
上2つがなんで同じコマンドなのかは不明。Gitのむかつきどころ。

ブランチの切り替え系

ブランチを切り替える
git checkout [ブランチ名]

ブランチ名の確認の仕方は、branchコマンドの項目を参照。

・例1

git checkout branchA

ブランチをbranchAに切り替える

・例2

git checkout -f branchA

ブランチを強制的にbranchAに切り替える
作業ツリーとインデックスの変更は破棄される

ブランチ作成と切り替えを同時に行う
git checkout -b branchC

あんまり使ったことない

ファイルを特定の状態に戻す系

ファイルを特定のcommitの状態に戻す

https://qiita.com/ritukiii/items/5bc8f74dbf4dc5d1384c

git checkout [コミット番号] [ファイルパス]

この操作は非常に使える。
例えばバグが発生したとき、どこのコミットからバグが発生したか調べるときに、ひとつひとつコミット番号を戻しながら使ったりする。

・コミット番号の調べ方
GitHubのページでファイルを開けばコミット番号が書いてある。
あるいはlogコマンドの項目を参照。

・例1

git checkout [コミット番号] hoge.txt

hoge.txtが[コミット番号]のときの状態に戻る

・例2

git checkout [コミット番号] .

全てのファイルが[コミット番号]のときの状態に戻る

・ 例3

git checkout HEAD hoge.txt

hoge.txtの現在の変更を破棄して、最新状態に戻す。

・例4

git checkout HEAD^ hoge.txt

hoge.txtを1つ前のコミットの状態に戻す。

log

コミット履歴を確認する

> git log
commit c4adc034f65a53d85b3fa8270e0e8239e4d45518
...

commit 8601edcfa95c72bf10c3b4479b59f1ffe488c5a0
...

ファイルのコミット履歴を確認する

$ git log --oneline hoge.txt
13aed9b (HEAD -> master, origin/master) updated
c4adc03 fix: 
8601edc fix: coding: utf-8

checkoutでファイルを特定のコミット状態に戻すときに便利

全体のコミット履歴を確認する

$ git log --oneline
13aed9b (HEAD -> master, origin/master) updated
c4adc03 fix:
ce5dd9d Update

stash

作業ツリー(とインデックス)の変更を、コミットせずに一時的に保存する。
スタッシュと呼ばれる領域に一時的に保存する。

作業ツリーとインデックスを一時的に保存する

$ git stash

作業ツリーを一時的に保存する(インデックスは保存しない)

$ git stash --no-keep-index

メッセージ付きで一時的に保存する

$ git stash save "message"

$ git stash save "fix: Change version"

スタッシュに保存したものの一覧

$ git stash list
stash@{0}: On master: fix: Change version
stash@{1}: WIP on master: 37c38ad fix: バグを修正

上に行くほど直近のスタッシュ。

スタッシュに保存した内容を作業ツリーに戻す

$ git stash apply <stash>
(例)
$ git stash apply stash@{0} 

スタッシュを指定しない場合、直近のスタッシュに戻る
技術評論社の ポケットリファレンス には「スタッシュを指定しない場合、直近のスタッシュが削除される」と書いてあるが、実際にはそのような動作はしなかった)

スタッシュに保存した内容を作業ツリーに戻した後、そのスタッシュを削除する

$ git stash pop <stash>
(例)
$ git stash pop stash@{0} 

使い方はapplyと同様。どちらか覚えれば良い。

スタッシュの削除

$ git stash drop <stash>
(例)
$ git stash drop stash@{0}

スタッシュを指定しない場合、直近のものが削除される

スタッシュの全削除

$ git stash clear