Gitまとめ
リモートリポジトリとローカルリポジトリ
リポジトリとは、ファイルやディレクトリの情報や変更履歴をまとめて記録しておく場所です。
複数人の開発者が参加するプログラミング環境において、ソースコードや仕様に関する情報をまとめて保管してくれます。
Gitのリポジトリにはリモートリポジトリとローカルリポジトリの2種類があります。
初期化コマンド
git init
Gitリポジトリを新たに作成するコマンド。
バージョン管理を行っていない既存のプロジェクトを変更する場合や、空の新規リポジトリを作成して初期化したい場合に使用します。
git initを実行すると、カレントディレクトリに".git"フォルダが作成され、プロジェクトのバージョンの管理を開始できます。
addする
作業ディレクトリ(ワークツリー)の変更をステージングエリアに追加するための操作。
個々のファイルのアップデート内容を次回コミットの対象とすることをGitに指示します。
git addコマンドだけでは実際にはリポジトリに影響は与えないので、git commitコマンドを実行して変更を記録しなければいけません。
ーaddコマンドの種類ー
ワークツリーに新規登録もしくは変更されたファイルをaddする
(rmコマンドなどで削除されたファイルはaddされない)
git add .
一つ前と最新のステージを比較して、変更があった部分のみをaddする
(新規作成されたファイルはaddされない)
git add -u
変更されたファイル、削除されたファイル、新規作成されたファイル、全てをaddする (git add .とgit add -u の両方実行したのと同じ感じ)
git add -A
なんでaddしなければいけないの?
一度にたくさんのファイルをcommitしたい場合に、新規作成や変更したファイルをステージングエリアにaddしておくことで一回のcommitで済むから。
git addしてステージングエリアという場所に新規作成や変更したファイルたちをひとまとめにして置いておくと、それらを一気にcommitすることができるので、一回一回差分をチェック(git diffコマンド)してcommitするという手間を省くことができる!ステージングエリア
ステージエリアやインデックスとも呼ばれます。
ステージングエリアの中身は .git ディレクトリの中にある"index"というバイナリファイルです。
ステージングエリアはコミットしたいファイルをひとまとめにしてとりあえず置いておくのに使います。
commitする
ファイルやディレクトリの変更や追加を記録するための操作。
コミットを実行すると、リポジトリ内では前回コミットされた時からの差分を記録したリビジョンが記録されます。
最新のコミットから辿ることで過去の変更履歴やその内容を知ることができます。
コミットするときにはコミットメッセージの入力が求められます。あとから見てわかりやすいコメントを書くように心がけましょう。(適当に書いたらダメ!具体的かつ簡潔に)
git commit -m "コメント"
ー応用編ー
直前のコミットの内容を修正する
git commit --amend
コミットメッセージの書き方
提言: コミットメッセージの一行目には要求仕様を書け - Qiita
Gitのコミットメッセージの書き方 - Qiita
ここまでのまとめ
ワークツリーで作業していたファイルを新規登録したり変更した時にaddしてステージングエリアにひとまとめにしておく。
ステージングエリアにひとまとめにされたファイルたちをcommitしてローカルリポジトリに記録する。
ブランチってなに
履歴の流れを分岐して記録しておくためのものです。
分岐したブランチは他のブランチの影響を受けないので、同じリポジトリで複数の変更を同時に進めていくことができます。
一つのプロジェクトから枝分かれさせて別の作業を行うことを「ブランチを切る」と言います。
また、分岐したブランチはマージ(合流)することで一つのブランチにまとめ直すことができます。
pushとpullとfetchとmerge
git push
ローカルリポジトリの内容をリモートリポジトリに送り込むコマンド
git fetch
リモートリポジトリの内容をローカルリポジトリに取り込むコマンド
git merge
リモートローカルのブランチを合流するコマンド
git pull
リモートリポジトリの内容をローカルリポジトリに取り込んだ後、現在のローカルのブランチに対して、それに対応するリモートのブランチをマージするコマンド
まとめるとこんな感じかな...
- 7ちゃんマロくんむらちゃんの例
7ちゃんの自己紹介ページを作るために、マロくんとむらちゃんも手伝うことになりました。
三人は他のメンバーの作業の影響を受けないようにmasterから自分のブランチに切り替えて作業を行います。
- むらちゃんの場合
git checkout #6680
swich to branch '#6680'と結果が返ってきたらOK!
写真ギャラリーの機能を追加し終わったむらちゃんはmasterに自分のブランチの変更を反映させます。
git add . git commit -m "写真ギャラリー追加" git push
このようにしたいところですが、masterに7ちゃんが先にpushしているので、むらちゃんは7ちゃんの変更をpullしてからpushします。
この例のようにブランチを切り替えながら作業を行うことで他のメンバーの作業による影響を受けることなく、自分の作業に取り組むことができます。
また、作業単位で履歴を残すことで、問題が発生した場合に原因となる変更箇所の調査や対策を行うことが容易になります。
では、
7ちゃんとむらちゃんが同じ箇所を変更していた場合、どうなるのでしょう?????
次回に続く...
今回のまとめ
Gitコマンド一覧
コマンド | 説明 |
---|---|
git init | Gitリポジトリを新たに作成するコマンド |
git add | 作業ディレクトリの変更をステージングエリアに追加するコマンド |
git commit | ファイルやディレクトリの変更や追加を記録するコマンド |
git pull | リモートリポジトリの変更内容を取り込むコマンド |
git push | ローカルリポジトリの変更内容をリモートリポジトリに反映させるコマンド |
git merge | リモートローカルのブランチを合流するコマンド |
git fetch | リモートリポジトリの内容をローカルリポジトリに取り込むコマンド |
git clone | 既存のリポジトリのコピーを取得するコマンド |
git status | 現在の状態を見るコマンド |
git diff | 差分を見るコマンド |
git log | コミットのログを見るコマンド |
git grep | リポジトリで管理されているファイルを検索するコマンド |
git rm | ファイルを削除するコマンド |
参考サイト
サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ
git add -A と git add . と git add -u の違い - Qiita
Git チュートリアルとトレーニング| Atlassian
git push の反対は git pull ではない - Qiita