Gitとは
プログラムのソースコードなどの変更履歴を記録・追跡するためのバージョン管理システム。
GitHubとは
ローカル環境で作成したコードをリモートリポジトリで公開するためのツール
0.用語解説
word | meaning |
---|---|
repository | ファイルや変更履歴を保管する場所 ローカルリポジトリ(自分のパソコン上) リモートリポジトリ(Webサービス上) |
worktree | 編集したファイルが自動的に保存される場所(※コミットの対象でない) |
index | 編集したファイルを仮確定して置いておく場所(※コミットの対象になる) ワークツリーとリポジトリの間に存在 |
remort | 共有ファイルの置き場所 |
commit | 変更履歴の保存 |
Fork | 他の人が公開しているリモートリポジトリを自分のアカウントにコピー |
Clone | リモートリポジトリをローカル環境(自分のパソコン)にコピー |
branch | 履歴の流れを分岐して記録する際に使用 分岐したブランチは他のブランチの影響を受けない 同じリポジトリ中で複数の変更を同時に進められる |
merge | masterから分けたブランチを統合・合体させる |
Push | ローカルリポジトリからリモートリポジトリへアップロード |
pull | リモートリポジトリからローカルリポジトリへデータをダウンロード |
pull request | 「プルリク」、「PR」と略される 自分のパソコンで開発したソースコードをリモートリポジトリにプッシュした後に変更内容を他の人にコードレビューしてもらい、masterに追加しても良いか確認 |
revert | コミットの削除ではなく、反対の内容で新規コミットを作ることで過去の変更を打ち消す |
rebase | 履歴が枝分かれせずに一直線となる |
squash | コミットを一つにまとめる |
fetch | リモートリポジトリから更新内容をダウンロードし、ローカルリポジトリ内のリモート追跡ブランチを更新(※マージした時にローカルリポジトリが更新される) |
stash | 未コミットのファイルを一時退避 |
cherry-pick | コミットしたブランチを別のブランチへ変更 |
1.ローカルリポジトリの作成
$ git init
・init
ializeの略:初期化
・ディレクトリ内に中身が空のローカルリポジトリを作成
・Reinitialized existing Git repository in /Users/〜〜〜〜〜〜/.git/
が表示された場合、すでに存在するものを初期化したという意味、エラーではない
2.変更ファイルをインデックスに移動
$ git add(reset) ファイル名
・変更があったファイルをインデックス移動させ、変更履歴を保存するための準備
・ワークツリー⇨インデックスへ移動(add)〈ステージとも言う〉
・インデックス⇨ワークツリーへ移動(reset)〈アンステージとも言う〉
・ファイル名無しの場合、git add(reset) .
で全て選択
・コミット前の変更内容を一時的に退避(復元)git stash (pop)
3.ファイル変更の履歴を保存
$ git commit -m "メッセージ"
・メッセージは" "
で囲む
・メッセージは変更した内容が分かりやすように表記
・コミットメッセージを修正 $ git rebase -i HEAD^
4.リモートの登録
$ git remote add リモート名 URL
・一般的にリモート名はorigin
・リモートにファイルをアップロード、リモートからファイルをダウンロードすることで、他者とファイルを共有することができる
5.リモートへのファイルアップロード
$ git push リモート名 master
・アップロードのことをプッシュという
6.リモートからのファイルダウンロード
$ git pull リモート名 master
・ダウンロードのことをプルという
7.変更ファイルの把握
$ git status
・変更があったファイルは赤字で表示 modified ファイル名
・追加されたファイルは緑字で表示modified ファイル名
8.変更内容の把握
$ git diff
・変更前のコード(赤字)
・追加コード、変更後のコード(緑字)
9.コミットメッセージの確認
$ git log
・自分や他人のコミットを表示
10.コミット内容の確認
$ git log -p
・qキー
を押して終了
11.ブランチの一覧を表示
$ git branch
・*
が現在のブランチ
12.ブランチの作成&削除&切替
①$ git checkout ブランチ名 # ブランチの切り替え
②$ git checkout -b ブランチ名 # ブランチの新規作成&切り替え
③$ git branch -d(D) ブランチ名 # マージしたブランチの削除
・②Switched to a new branch 'ブランチ名'
と表示され、切替も行われる
・③D
は強制削除(マージ済みか関係なく)
※マージ済か確認【$ git branch --(no-)merged master
】
13.変更内容の統合
$ git merge ブランチ名①(統合する側)
・ブランチ②(統合される側)に移動してから実行する
14.過去のコミットの状態にファイルを戻す
$ git checkout HEAD^
・^
が1つは1つ前のファイル、^^^
なら3つ前のファイルに戻す
15.ローカルリポジトリからリモートリポジトリへプッシュ
①バージョン管理の開始【$ git init
】(1回目だけ)
②worktree
で作成したコードをindex
に移動させる【$ git add .
】
③ファイル変更の履歴保存【$ git commit -m "メッセージ"
】
※$ git commit
でvim
編集も可能
①i
②コミットメッセージ入力③esc
④:wq
④GitHubでNew repository
の作成
⑤ローカルリポジトリとリモートリポジトリを関連付けるURLをコピー【Clone or download
をクリック】
⑥関連付け【$ git remote add origin ⑤のURL
】
git remote
で確認するとorigin
に関連付けされる
⑦ origin
に対してプッシュする【$ git push origin ブランチ名
】
リモートリポジトリにソースコードが反映される
16.共同開発の流れ
①GitHubでClone or download
をクリックしURLをコピー
②クローンする(※コピーしたい場所のディレクトリ上で)【$ git clone ①のアドレス
】
③クローンしたディレクトリへ移動【$ cd ディレクトリ】
④ブランチの作成または切替【$ git checkout (-b) ブランチ名
】
④$ git add .
⑤$ git commit -m "メッセージ"
⑥$ git push origin ブランチ名
⑦GitHubで変更されたブランチのCompare & pull request
をクリック
※動作確認を行い、正常に機能するか確認してから行うこと
⑧title(変更内容の表題)とWrite(変更内容の詳細)を記入し、Create pull request
をクリック
※どのブランチにプルリクエストを送るのか確認
※Writeはマークダウンで記入できる
⑨他の人にコードレビューしてもらいMerge pull request
>Confirm merge
をクリック
※自分がチェックする場合は、Files chenged
をクリックし、変更内容をチェック
⑩マージが終われば、統合前のブランチが不要になるためDelete branch
をクリック
17.リモートリポジトリの情報をローカルリポジトリに反映させる#
・ローカル環境へ変更内容を反映【$ git pull origin master
】
※マージ後のファイル内容はローカルリポジトリには反映されていないため
※ブランチをmaster
に移動してから実行
※git fetch(取得)
とgit merge(反映)
を同時に行われている
※git fetch(取得)
はローカルのファイルは変更されないが、ブランチを指定せずにリモートの情報を一括で取得できる
18.コミットメッセージの変更
①過去のコミットメッセージを確認【$ git log
】
②$ git rebase -i HEAD^
③iを押して表示をINSERTモードに切り替え、一番上に書かれているpickの部分をrに変更
④escを押し、:wqで上書き保存
⑤iをクリックしてINSERTモードに切り替え、コミットメッセージを変更
⑥escを押し、:wqで変更内容を保存
19.コンフリクトの解消
①ローカルリポジトリでmasterブランチへ切り替え【$ git checkout ブランチ名
】
②リモートリポジトリのmasterをpull$ git pull origin master
】
③コンフリクトしたブランチへ移動【$ git checkout ブランチ名
】
④変更を反映させたmasterを③のブランチにマージ【$ git merge master
】
⑤再度変更内容をリモートリポジトリへpush