よく使うgitコマンド集 - nekoharuyuki/PuzzleRPG-cocos2d GitHub Wiki

よく使うgitコマンド全集

Gitをそこそこ使いこなすにあたって必要な基礎知識やコマンドをまとめました。

Gitとは

分散型バージョン管理システム。
今時ソースコードなどをバージョン管理するってなったらGitを使うことになるでしょう。
GitHub(Enterprise含む)とかGitLabとかGitBucketとかBitBcuketとかGitのサービスは複数ありますが、どれを使うかはチーム事情や会社事情などから決まる。
ローカルにリモートリポジトリの複製を作成するため、複数人が各々のローカルで変更履歴を利用して自由にファイルの編集やローカルコミットができるのが特徴。


gitの現状を確認する

version

バージョン確認

$ git --version

help

ヘルプの表示

$ git help <name_of_command>

status

コミット対象として指定されたファイルを確認

$ git status

log

全コミットログを確認

$ git log 

特定ファイルのコミットログを表示

$ git log <name_of_file>

config

現在の設定を確認

$ git config

show

指定対象の情報を確認

$ git show <object>

レポジトリに対する操作

init

ローカルレポジトリの作成

$ git init

remote

リモートレポジトリの作成

$ git remote add <name_of_repositry> <URL_of_repositry>

リモートレポジトリ一覧の表示

$ git remote

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

$ git remote remove <name_of_repositry>

clone

リモートレポジトリをクローン(ローカルレポジトリが同時生成される)

リモートリポジトリをローカルにダウンロードする。
リモートブランチ上で複数ブランチが存在する場合は全てのブランチも一括でダウンロードする。
リモートリポジトリのURLはWEB画面から取得できます。

$ git clone [email protected]:hogehoge...

ブランチを操作する

ブランチは作業履歴を枝分かれさせて記録していくためのもの。
ブランチ上での変更は統合されるまで他ブランチに影響しないしされない。

branch

ブランチ一覧の表示

$ 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 で実行)

checkout

ブランチのチェックアウト(切り替え)

$ 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

リモートレポジトリの内容をpull(指定がない場合はoriginが自動選択される)

$ git pull <name_of_repository>

プル実行後に自動コミットを行わない

$ git pull <name_of_repository> --no-commit

変更点を確認する

diff

現在の作業ツリー内で、まだindexにあがっていないファイルの変更点を表示

$ git diff

指定ファイルの変更履歴を表示

$ git diff <name_of_file>

2コミット間の指定ファイルの差分を表示

$ git diff <commit_ID> <commit_ID> <name_of_file>

fetch

リモートレポジトリの情報をローカルにダウンロード(.git内のFETCH_HEADに保存)

$ git fetch

フェッチ対象を指定して実行

$ git fetch <name_of_repository>

ファイルを検索する

grep

リポジトリ内から指定テキストに合致するファイルを探し、合致した行を表示

$ git grep <condition_of_search> 
$ git grep <condition_of_search> -chched (インデックスを対象に)
$ git grep <condition_of_search> -no-index (管理対象外ファイルを検索)

ファイルの名前を変更する

mv

ファイル名を変更する

$ git mv <old_name> <new_name>

変更点を一時保存する

stash

作業ツリーの変更点を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>

ファイルを削除する

rm

ファイルを削除する(この履歴をコミットすることでリモートにも反映される)

$ git rm <name_of_file> <name_of_file> 

拡張子をしていして、まとめて削除する(例では拡張子txtをまとめて削除)

$ git rm *.txt 

コミットを打ち消す為のコミットを行う

revert

指定したコミットにおける変更を打ち消すコミットを実行

$ git revert <commit_ID>

コミットやaddを取り消す

reset

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にしておけば安心。 なのだそう。


タグを付ける

tag

タグ情報の表示

$ 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>

コミットする

add

コミットするファイルを指定して、indexにあげる

$ git add <name_of_file>

全ての変更をindexにあげる

$ gid add . 

ディレクトリを指定し、その配下のファイルを全てindexにあげる

$ git add <name_of_directry>/ 

commit

indexのファイルをコミットする

$ git commit -m <commit_message>

変更されている全てのファイルを、インデックスに上げる過程を省いてコミット

$ git commit -m <commit_message> -a  

直前のコミットを変更する形でコミット

$ git commit --amend

コミット履歴を書き換える

rebase

指定ブランチで行ったコミットを、その派生元ブランチに適応させる

$ 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>

プッシュする

push

変更をリモートにプッシュする(指定が省略された場合はoriginが選択)

$ git push <name_of_repositry>

ローカルに存在する全てのブランチをプッシュする

$ git push --all

ローカルブランチがリモートブランチの子孫でない場合も、強制的にプッシュ

$ git push <name_of_repository> -f

プルリクエストを出す

request-pull

プルリクエストを出す(指定レポジトリに対して、最初のコミットから最後のコミットまで)

$ git request-pull <first_commit_ID> <URL_of_repository> <last_commit_ID>

マージする

merge

ブランチを指定してマージ

$ git merge <name_of_branch>

競合を起こした場合、マージを中止して元の状態に戻す

$ git merge --abort

mergetool

マージ時に発生した競合を解決するためのツールを起動

$ git mergetool -t <name_of_tool>

使用できるツール一覧を確認

$ git mergetool --tool-help

originって何?

originはリモートリポジトリのURLの別名を指す。 gitのコンフィグで設定可能であり、originの現在の値は以下で確認可能。

実行例
$ git remote get-url originXXXXX

HEADって何?

HEADは現在のブランチの先頭を意味する。

1つ前のHEAD位置の指定の仕方

  • HEAD^
  • HEAD~

2つ前のHEAD位置の指定の仕方

  • HEAD^^
  • HEAD~~
  • HEAD~2

.gitignoreファイル

Gitで管理したくないファイルやディレクトリを定義するファイル。

.gitkeepファイル

空ディレクトリをGitで管理できるようにするファイル。 空ディレクトリはそのままではGitで管理されないため、管理対象にしたい空ディレクトリがある場合は、対象ディレクトリ内に.gitkeepファイルを作成する。 ファイル名は.gitkeepでなくても構わないが、通例.gitkeepとする。

⚠️ **GitHub.com Fallback** ⚠️