プログラマーな日々

I'm a Cloud Architect and Developer, and a trainee of the network engineer training course. I have certified by AWS and Cisco (SAA/SOA/DVA/CCNA). I especially have highly motivated to reduce toils.

Gitチートシート

随時更新します。

基本操作

ブランチを作成したい

git branch [name]
git branch [name] [ハッシュ] // コミットを指定してブランチ作成

ブランチ移動

git checkout
git checkout -b [name] // ブランチの作成と移動を同時にやる

コミット移動

git reset             // 指定のコミットまで戻る。作業ファイルはそのまま
git reset --hard  // 作業ファイルの変更も元に戻る。注意!!

リモートリポジトリを追加

git remote add origin [url]

リモートリポジトリを確認

$ git remote -v

変更をプッシュしたい

git push origin master    // originというリモートリポジトリのmasterというブランチにプッシュ
git pushで毎回パラメータを指定するのが面倒

-uを指定すると、ローカルブランチがリモートブランチにリンクされます。次回以降は引数なしでgit pushを実行できます。

git push -u origin master

リモートの更新を確認したい

git fetch // 更新情報を取得(ファイルは更新しない)

リモートの更新をマージしたい

git merge origin/master // 更新をマージ。この例ではoriginが指すリポジトリのmasterブランチをマージ。

二つのcommit間の差分を出力したい

qiita.com

git diff <コミットハッシュ1> <コミットハッシュ2>

コミットのログを見たい

git log
git log -p // ENTERを連続で押す、またはQで抜ける

コミットのログをグラフィカルに見たい

git log --graph

ローカルの単一ファイルの変更を元に戻したい

git checkout some_filename

トラブルシュート

コミットメッセージを間違えてしまった

www.granfairs.com

クローンしたらdevelopブランチがない

qiita.com

で、git branchすればわかるんだけど、このままだとmasterブランチしかローカルにcloneできてない。別のブランチ(developmentとする)もローカルにcloneしたい。

git checkout -b development origin/development

git configの変更が反映されない

globalよりもlocalのエントリが優先されます。

git config --global user.name John
git config --list | grep user.name
user.name=Thomas

--show-originでエントリのoriginを確認します。

git config --list --show-origin | grep user.name
file:C:/Users/xxx/.gitconfig        user.name=John
file:.git/config        user.name=Thomas    // localが優先される

globalのエントリを反映させたいなら、localのエントリを削除します。

git config --unset user.name
git config --list | grep user.name
user.name=John

その他

gitignoreのテンプレートがほしい

hnw.hatenablog.com