Gitコマンドの勉強

はじめに

Gitを使わなければならなくなったので,コマンドラインによるGitの操作について勉強したものをまとめます.
書きかけです!

リファレンス - ローカルリポジトリ

リポジトリの初期化

git init

現在の状態の表示

git status

ステージしてコミット

git add [file]
git commit -m "Commit message!"

HEADの移動

git checkout [hash]
git checkout [branch_name]
git checkout [branch_name]^ // 1つ遡る
git checkout [branch_name]~k // k個遡る

コミットへのタグ付けと表示

git tag [tag_name]
git tag

ステージ前のファイルの復元

git checkout [file]

ステージの取りやめ

git reset HEAD [file]

コミットを元に戻す

上書きして元に戻す

git revert HEAD

そもそもなかったことにする

git reset --hard [branch_name]
git reset --hard [hash]

コミットを修正する

git commit --amend -m "Commit message!"

ブランチの切り分けとチェックアウト

git branch [branch_name]
git checkout [branch_name]

一気にやるときは

git checkout -b [branch_name]

ブランチのmerge

masterブランチにdevelopブランチをmergeするとき...

git checkout master
git merge develop

ブランチのrebase

自然言語で表現しにくい...
masterブランチからdevelopブランチを切り分けた後の,masterブランチのコミットの親がdevelopブランチになるよう歴史改変します.
mergeと比べて,コミット履歴がぐちゃぐちゃせずにスッキリします.一方で,rebaseは過去のコミットを上書きするものであるため,共有リポジトリで使用すると問題になる場合があります.

git checkout master
git rebase develop

リファレンス - リモートリポジトリ編

リポジトリのクローン

git clone [repo] [new_repo]

bareリポジトリをクローンする場合は

git clone --bare [repo] [new_bare_repo].git

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

git remote

リモートリポジトリの情報を閲覧

git remote show origin

リモートリポジトリのコミットを取得(するだけ)

git fetch

リモートリポジトリのコミットを取得してマージ

git pull

masterブランチにいて,origin/masterをプルした時は以下と同義

git fetch
git merge origin/master

リモートリポジトリのブランチをトラック

origin/hogeブランチを,ローカルのhogeブランチでトラックする場合

git branch --track hoge origin/hoge

もしくは

git checkout -b hoge origin/hoge

既に存在するリポジトリを追跡させるには

git branch --set-upstream-to=[remote_branch] [branch]

プッシュ

originのmasterブランチにプッシュする場合

git push origin master

リモートにブランチを新規に生成する場合には

git push origin [local]:[remote]

リモートのブランチを削除する場合には

git push origin :[remote]