Git |
「ファイル」「データ」の編集履歴を 正確に把握できる「バージョン管理システム」。 「新旧」の入れ替えが自由で簡単。 「コマンド操作」の「CUIツール」。 |
Github |
「Git」の仕組みを利用して、 他のユーザーとの共同開発環境を提供している WEBサービスの名称。 「画像表示」「マウス」などを使用しての 直感的な操作が可能な「GUIツール」。 |
インデックス | 通常の個人での「編集内容」を「保存」をする領域。 |
---|---|
ローカルリポジトリ | いつでも編集の「採用」「取り消し」ができるように、 「過去」「新規」の「編集内容」 時系列で保存する領域。 |
リモートリポジトリ |
共同開発チーム全員が、 ・「作業状況」の確認 ・「最新データ」「過去データ」の保存 ・「最新データ」「過去データ」の取得 などをする領域。 |
基本用語 | 説明 | ||||||
---|---|---|---|---|---|---|---|
リポジトリ(repository) |
「リポジトリ」は、 「ファイル」「ディレクトリ」を入れて保存しておく場所(貯蔵庫・金庫)を意味している。 「Git」における「リポジトリ」の種類は、
「変更」などの「編集作業」は、それぞれのユーザーが手元の「ローカルリポジトリ」で実行し、 「変更」などをした「作業内容」を共有するときに「リモートリポジトリ」にアップロードし、 他の共同編集しているユーザーなどにで公開するという手順で、 「Git」を活用する。 「リモートリポジトリ」を確認することにより、 「他のユーザー」は、作業内容を確認でき、 開発を効率良く進めることが可能となる。 | ||||||
「ワークツリー」と「インデックス」 |
「ワークツリー」と「インデックス」は、
一度「インデックス」に登録する必要がある。 編集したファイルを「リポジトリ」へコミットする前に、「インデックス」へ「登録(仮置き・add・一時保管)」しておく。 「ワークツリー」から「リポジトリ」への保存は、 「リポジトリ」を利用して「編集前」に戻すことが出来なくなるので、 「編集ミス」を補うことが出来なくなる。 そのため、 「ワークツリー」と「インデックス」という概念が必要になる。 コミット予定のファイルをインデックスに仮置きすることで、 「編集した内容:を後から確認でき、 その上で、ローカルリポジトリに記録する「コミット」を実行できる。 「編集したファイル」のコミットし忘れや、 「余計なファイル」を含めずにコミットする ということが可能となる。 | ||||||
クローン(clone) |
「クローン(clone)」は、
「リモートリポジトリ」を「ユーザー」の「ローカルリポジトリ」に「ダウンロード」する作業で、 「ユーザー」の「PC」に、 「リモートリポジトリ」と同じものを作るため 「クローン(コピー)」を作る。 共同開発で、 一番最初に行う作業でもある。 | ||||||
操作方法 | |||||||
コミット(commit) |
「コミット」は、 「インデックス」に「一時保存」されている「編集内容」を、 「ローカルリポジトリ」に「記録」「保存」する操作。 「コミット」を実行するごとに、 「ファイル編集の日時」を記録した「ファイル」が生成され、 「時系列順」に整理され格納される。 後から、 「ファイル」の「更新履歴」「編集内容」を確認することができることになる。 | ||||||
プッシュ(push) |
「プッシュ」は、 「ローカルリポジトリ」にある「編集ファイル」を 「リモートリポジトリ」に「送信(アップロード)」し、「保存」する操作。 | ||||||
ブランチ(branch) |
「ブランチ」は、 「編集ファイル」を分岐させて記録する機能。 「分岐前」の「元データ」を「マスターブランチ」と呼び、「メインのブランチ」とする。 編集前に、「ブランチ(分岐)」を造り、 編集内容を保存する「インデックス」に似た、「仮置き場」の「ローカルリポジトリ」を作成することも可能。 | ||||||
マージ(merge) |
「マージ」は、 「ブランチ」「開発」などによって、 「複数」のブランチとなったものを、一つにまとめる「作業」。 「バグの修正」「機能の追加」などの編集をした「ブランチ」を、 「マスターブランチ」に統合する作業など。 | ||||||
プル(pull) |
「プル」は、 「リモートリポジトリ」内の「新規ファイル」「最新ファイル」などを、 個別に「ローカルリポジトリ」に「ダウンロード」する機能。 「クローン」との違いは、 「リモートリポジトリ全体」を「ダウンロード」するのが「クローン」。 「リモートリポジトリ」内の一部の「ファイル」「データ」だけを「ダウンロード」するのが「プル」。 「ローカルリポジトリ」にある「編集ファイル」と 「リモートリポジトリ」の「同じファイル」が「更新」されていた場合、 「プル」操作の際に、エラーが出る。 知らないと「編集内容」が喪失する可能性もある。 「フェッチ」による確認で、「エラー回避」が可能。 | ||||||
フェッチ(fetch) |
「フェッチ」は、 「最新情報」があるかを「確認」してくれる機能。 「リモートリポジトリ」から 自動で「更新履歴」などを確認し、「最新ファイル」「最新データ」などの最新情報を「取得」してくれる。 「プル(個別ダウンロード)」はしないので、 必要な場合は、自身で「プル」操作をする必要がある。 |
動作内容 | コマンド・説明 |
---|---|
初期設定を行う |
$ git config --global user.name "〇〇〇〇" $ git config --global user.email "〇〇〇〇@hogehoge.com" |
ローカルにリポジトリを作成、リモートにプッシュ |
$ git init $ git add . $ git commit -m "Initial commit" $ git remote add origin https://github.com/〇〇〇〇/〇〇〇〇.git $ git push -u origin master |
リモートからクローン | $ git clone https://github.com/〇〇〇〇/〇〇〇〇.git |
リモートから変更を取得 |
$ git pull or $ git fetch $ git merge origin/master |
ファイルの登録(コミット) |
$ git add ファイル名 |
ファイルの変更や追加をコミット |
$ git commit -m "コミットメッセージ" |
ローカルの変更を確認 |
$ git status |
リモートとローカルのファイル内容の違いを抽出 |
$ git diff ファイル名 |
commitの変更履歴をみる |
$ git log |
指定したcommitの変更点を確認 |
$ git show コミットのハッシュ値 |
リモートにプッシュ |
$ git push origin ブランチ名 |
addの取り消し |
$ git reset HEAD ファイル名 |
commitの取り消し |
$ git reset --hard HEAD^ --hard:コミット取り消した上でワークディレクトリの内容も書き換え --soft:ワークディレクトリの内容はそのままでコミットだけを取り消し HEAD^:直前のコミット HEAD~{n} :n個前のコミット |
commitの取り消し |
$ git revert コミットのハッシュ値 |
コミットメッセージの修正 |
$ git commit --amend "新しいコミットメッセージ" |
pushの取り消し |
$ git reset --hard 戻したいコミットのハッシュ値 $ git push -f |
ローカルでブランチを作成 |
$ git branch ブランチ名 |
ローカルでブランチを切り替え |
$ git checkout ブランチ名 |
ブランチ作成 & 切り替え |
$ git checkout -b ブランチ名 |
ブランチ名の変更 |
$ git branch -m 古いブランチ名 新しいブランチ名 |
ブランチの削除 |
$ git branch -d ブランチ名 |
ローカルのブランチをリモートに反映 |
$ git push -u origin ローカルのブランチ名 |
リモートのブランチをローカルへダウンロード |
$ git branch ブランチ名 origin/ブランチ名 |
リモートのブランチをローカルへダウンロード & 切り替え |
$ git checkout -b ブランチ名 origin/ブランチ名 |
全てのブランチを確認 |
$ git branch -a |
ブランチを比較 |
$ git diff ブランチ名 ブランチ名 |
ブランチをマージ |
$ git merge ブランチ名 |
fast-forwardの関係であっても必ずマージコミットを作成
$ git merge --no-ff ブランチ名 | |
ブランチをリベース |
$ git rebase ブランチ名 ※ mergeの場合は分岐元、rebaseの場合は分岐先のブランチで実行という点に注意。 |
変更点を一旦退避 |
$ git stash save |
退避した作業の一覧を見る |
$ git stash list |
退避した作業を戻す |
$ git stash apply stash名 |
退避した作業を消去 |
$ git stash drop stash名 |
退避した作業をすべて消去 |
$ git stash clear |
ファイル削除 |
$ git rm -f ファイル名 |
ファイルリネーム |
$ git mv 元のファイル名 変えたいファイル名 |
ファイルを最新のコミットの状態に戻す |
$ git checkout HEAD ファイル名 |
ファイルを指定コミットまで戻す |
$ git checkout コミットのハッシュ値 ファイル名 |
.gitignore を無視して追加 |
$ git add -f ファイル名 |
ディレクトリだけ登録(.gitkeepをディレクトリに作成) |
$ touch ディレクトリ名/.gitkeep |