EurekaMoments

新米エンジニアが一人前を目指す修行の日々を記していくブログです。

良く使うGitコマンドの逆引きメモ

背景・目的

今更ながら、会社でも自宅でもソースコード管理をするのにGitを使うようになったのですが、良く使う基本的なコマンドすら中々覚えられないので、いつでも見返せるように逆引きメモとして残しておこうと思います。

参考文献

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

リモートリポジトリからクローンする

git clone <URL>

ブランチを作成する

hogeブランチを作成

git branch hoge

今いるブランチを*で示す

git branch

ブランチ一覧を確認する

git branch --all

作業ブランチを切り替える(チェックアウト)

hogeブランチに切り替える

git checkout hoge

ブランチ作成 + チェックアウト

hogeブランチを作成して切り替える

# from current branch
git checkout -b hoge

# from master
git checkout -b hoge master

既存ブランチと同じ名前のブランチを強制的に再生成 + チェックアウト

hogeブランチが既に存在している場合でも新規に再生成

git checkout -B hoge master

全ての変更を破棄して強制的にチェックアウト

git checkout -f master

ブランチ名を変更する

ブランチ名をhoge1からhoge2に変更

git branch -m hoge1 hoge2

ブランチを削除する

ブランチhogeを削除

git branch -d hoge

リモートリポジトリとURLの一覧を表示

git remote -v

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

hogeリポジトリを追加

git remote add hoge URL

リモートリポジトリを削除

git remote rm hoge

前回のコミットと比較した変更内容を表示

git status

ワークスペース上の編集 or 追加ファイルをステージに上げる

編集 or 追加されたhogeファイルをステージに上げる

git add hoge 

ローカルリポジトリにコミットする

git commit -m "comment"

直前のコミットに上書きする

git commit --amend

コミットログを確認する

git log

インデックスの変更内容を取り消す

git reset <file path>

現在のブランチの先頭コミットと同じ状態に戻すなら、

git reset HEAD <file path>

最後のコミットから2回以上のaddがあった場合、1回目を含めて全てがリセットされるので、git addコマンド1回分の取り消しではない。

git commitの実行を取り消す

最新のコミット内容をちょっとだけ変更したい時。
インデックスには最新の変更を残したまま、HEADだけを一つ前に巻き戻す。

git reset --soft HEAD^

過去のコミット直後に強制的に戻す

ローカルのmasterとリモートのorigin/masterと食い違ってしまい、とりあえずリモートに合わせたい時に、コマンド一撃で合わせる事ができる。

git reset --hard origin/master

ローカルへのコミットをリモートリポジトリにpushする

git push -u origin master

リモートリポジトリの変更をローカルに取り込む

git pull 

リポジトリからファイルを削除 + ディレクトリから削除

git rm hoge

リポジトリからファイルを削除 + ディレクトリには残す

git rm --cached hoge

ファイル名を変更する

git mv original_file renamed_file

あとはいつも通りにcommit->push

SVNリポジトリからローカルのGitリポジトリを作成する

作業ディレクトリに移動して、そこにSVNリポジトリをクローンする。

cd local_working_directory
git svn clone <SVN repository URL>

git clone -sにすると、trunk, branches, tagsの構成をそのまま取り込める。

ローカルGitリポジトリに変更を行い、SVNリポジトリへ反映する

例えばhoge.pyというファイルを修正したとして、まずはローカルcommit

git add hoge.py
git commit -m "comment"

次にSVNのリモートリポジトリに反映

git svn dcommit

最後にちゃんと反映されているか確認する。作業ディレクトリに移動して、

svn update
svn log

(番外編)Git Bashで新規ファイルを作成する

touch hoge

今後も随時更新していきます。