よく使うgitコマンド集 - nekoharuyuki/PuzzleRPG-cocos2d GitHub Wiki
Gitをそこそこ使いこなすにあたって必要な基礎知識やコマンドをまとめました。
分散型バージョン管理システム。
今時ソースコードなどをバージョン管理するってなったらGitを使うことになるでしょう。
GitHub(Enterprise含む)とかGitLabとかGitBucketとかBitBcuketとかGitのサービスは複数ありますが、どれを使うかはチーム事情や会社事情などから決まる。
ローカルにリモートリポジトリの複製を作成するため、複数人が各々のローカルで変更履歴を利用して自由にファイルの編集やローカルコミットができるのが特徴。
バージョン確認
$ git --version
ヘルプの表示
$ git help <name_of_command>
コミット対象として指定されたファイルを確認
$ git status
全コミットログを確認
$ git log
特定ファイルのコミットログを表示
$ git log <name_of_file>
現在の設定を確認
$ git config
指定対象の情報を確認
$ git show <object>
ローカルレポジトリの作成
$ git init
リモートレポジトリの作成
$ git remote add <name_of_repositry> <URL_of_repositry>
リモートレポジトリ一覧の表示
$ git remote
リモートレポジトリを削除
$ git remote remove <name_of_repositry>
リモートレポジトリをクローン(ローカルレポジトリが同時生成される)
リモートリポジトリをローカルにダウンロードする。
リモートブランチ上で複数ブランチが存在する場合は全てのブランチも一括でダウンロードする。
リモートリポジトリのURLはWEB画面から取得できます。
$ git clone [email protected]:hogehoge...
ブランチは作業履歴を枝分かれさせて記録していくためのもの。
ブランチ上での変更は統合されるまで他ブランチに影響しないしされない。
ブランチ一覧の表示
$ git branch
ブランチの作成
$ git branch <new_branch_name>
ブランチの名前変更
$ git branch -m <old_branch_name> <new_branch_name>
ブランチの削除
$ git branch -d <name_of_branch>
リモートのブランチ(ローカルには無いもの)を新しくローカルにコピー
$ git branch [local_branch_name] origin/[remort_branch_name]
#(ローカルでのチェックアウトも行う場合は branch -b で実行)
ブランチのチェックアウト(切り替え)
$ git checkout <wanna_channge_branch_name>
ブランチを新規作成し、そのブランチにチェックアウト
$ git checkout -b <new_branch_name>
指定ファイルを作業ツリーに取り出す(ブランチのチェックアウトは行わない)
$ git checkout <name_of_file>
履歴を戻って、そこからブランチを作成
$ git checkout [commit_id] -b [new_branch_name]
リモートレポジトリの内容をpull(指定がない場合はoriginが自動選択される)
$ git pull <name_of_repository>
プル実行後に自動コミットを行わない
$ git pull <name_of_repository> --no-commit
現在の作業ツリー内で、まだindexにあがっていないファイルの変更点を表示
$ git diff
指定ファイルの変更履歴を表示
$ git diff <name_of_file>
2コミット間の指定ファイルの差分を表示
$ git diff <commit_ID> <commit_ID> <name_of_file>
リモートレポジトリの情報をローカルにダウンロード(.git内のFETCH_HEADに保存)
$ git fetch
フェッチ対象を指定して実行
$ git fetch <name_of_repository>
リポジトリ内から指定テキストに合致するファイルを探し、合致した行を表示
$ git grep <condition_of_search>
$ git grep <condition_of_search> -chched (インデックスを対象に)
$ git grep <condition_of_search> -no-index (管理対象外ファイルを検索)
ファイル名を変更する
$ git mv <old_name> <new_name>
作業ツリーの変更点をstashに保存
$ git stash save <"message">
stashのリストを確認
$ git stash list
スタッシュを復元(指定がない場合は最後のスタッシュ)スタッシュは破棄する
$ git stash pop <name_of_stash>
最後のスタッシュを復元、スタッシュ自体は残る
$ git stash apply
stashを削除
$ git stash drop <name_of_stash>
ファイルを削除する(この履歴をコミットすることでリモートにも反映される)
$ git rm <name_of_file> <name_of_file>
拡張子をしていして、まとめて削除する(例では拡張子txtをまとめて削除)
$ git rm *.txt
指定したコミットにおける変更を打ち消すコミットを実行
$ git revert <commit_ID>
indexにあがったファイルの情報を取り消す(作業ツリーには影響なし)
$ git reset <name_of_file>
指定ファイルに関して、indexの内容を指定コミット時の状態まで戻す
$ git reset <commit_ID> <name_of_file>
作業ツリー、indexどちらも変更なしでコミットを取り消す
$ git reset --soft <commit_ID>
indexのみリセットしてコミットを取り消す
$ git reset --mixed <commit_ID>
indexをリセットし、作業ツリーを指定コミットの状態まで戻す
$ git reset --hard <commit_ID>
indexから指定ファイルを取り除く
$ git reset HEAD [file_name]
オプションに関しては、こちらが詳しくまとまっています。
やってしまったコミット(だけ)をなかったことにしたかったら、--soft addもなかったことにしたかったら、オプションなし ファイルの変更自体をなかったことにしたかったら、--hard 言い換えると
現在のファイルの中身が変わっちゃ困るなら、--hardはやっちゃダメ addしたものを忘れられちゃこまるなら、オプションなしでは危ない。--softをつけよう。 コミット位置を変えたくないなら、git reset使うな…ではなく、戻す先をHEADにしておけば安心。 なのだそう。
タグ情報の表示
$ git tag
直前のコミットに対してタグを付ける
$ git tag <name_of_tag>
コミットを指定してタグ付けを行う
$ git tag <name_of_tag> <commit_ID>
タグを削除する
$ git tag -d <name_of_tag>
タグを検証する
$ git tag -v <name_of_tag>
コミットするファイルを指定して、indexにあげる
$ git add <name_of_file>
全ての変更をindexにあげる
$ gid add .
ディレクトリを指定し、その配下のファイルを全てindexにあげる
$ git add <name_of_directry>/
$ git commit -m <commit_message>
変更されている全てのファイルを、インデックスに上げる過程を省いてコミット
$ git commit -m <commit_message> -a
直前のコミットを変更する形でコミット
$ git commit --amend
指定ブランチで行ったコミットを、その派生元ブランチに適応させる
$ git rebase <base_branch_name> <name_of_branch>
rebase中の競合発生した場合、今までの作業を全て中止する
$ git rebase --abort <base_branch_name> <name_of_branch>
rebase中の競合発生で中断した作業を、続きから再開させる
$ git rebase --continue <base_branch_name> <name_of_branch>
変更をリモートにプッシュする(指定が省略された場合はoriginが選択)
$ git push <name_of_repositry>
ローカルに存在する全てのブランチをプッシュする
$ git push --all
ローカルブランチがリモートブランチの子孫でない場合も、強制的にプッシュ
$ git push <name_of_repository> -f
プルリクエストを出す(指定レポジトリに対して、最初のコミットから最後のコミットまで)
$ git request-pull <first_commit_ID> <URL_of_repository> <last_commit_ID>
ブランチを指定してマージ
$ git merge <name_of_branch>
競合を起こした場合、マージを中止して元の状態に戻す
$ git merge --abort
マージ時に発生した競合を解決するためのツールを起動
$ git mergetool -t <name_of_tool>
使用できるツール一覧を確認
$ git mergetool --tool-help
originはリモートリポジトリのURLの別名を指す。 gitのコンフィグで設定可能であり、originの現在の値は以下で確認可能。
実行例
$ git remote get-url originXXXXX
HEADは現在のブランチの先頭を意味する。
- HEAD^
- HEAD~
- HEAD^^
- HEAD~~
- HEAD~2
Gitで管理したくないファイルやディレクトリを定義するファイル。
空ディレクトリをGitで管理できるようにするファイル。 空ディレクトリはそのままではGitで管理されないため、管理対象にしたい空ディレクトリがある場合は、対象ディレクトリ内に.gitkeepファイルを作成する。 ファイル名は.gitkeepでなくても構わないが、通例.gitkeepとする。