プログラマーな日々

Developer and Cloud Architect. I Don't belong to any company now. AWS Certified SAA/SOA/DVA BigData ETL (Redshift, Data Pipeline, Lambda)/C#/bash/PowerShell

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