Git
https://gyazo.com/0445ae0f8403e373bbeb1b4017bd87ce
Gitとは
バージョン管理システム
Linuzカーネルのソースコード管理システムとして2005年に開発
リーナス・トーバルズが10日ほどでその基礎を開発
Githubのおかげで普及
コミットとは
ファイルの状態を記録することをコミットという
コミットはそれぞれ一意のハッシュ値=コミットハッシュを持つ。
リポジトリ
コミットをためていく場所をリポジトリという
既にあるリポジトリに参加する場合=リポジトリをコピー=クローン
もしくは、リポジトリを新規作成する場合
ローカルリポジトリ=自分のPC内にあるリポジトリ。自分専用。
リモートリポジトリ=ネット上にある共有のリポジトリ
サーバは自分で用意することもできる
ホスティングサービス(例:Github)を使うことも可能
Gitの管理対象
フォルダ単位
Gitで管理しているフォルダの中に「.git」というフォルダがある
.gitがローカルリポジトリのある場所
UnmodifiedとUntracked
Unmodified=最後のコミットから変更が加えられてないファイルの状態のこと
Untracked=まだ一度もコミットされてない新規ファイル
modified=変更が加えられた状態
ワークツリー/ステージングエリア/Gitディレクトリ
ワークツリー=変更するファイルを保存する場所
ステージングエリア=コミットするファイルを登録する場所
Gitディレクトリ=コミットを格納する場所
※ちょっとよくわからんけど、そういうもんだとしておく。
ブランチとコンフリクト
ブランチ=別々の機能を追加した場合
コンフリクト=同じ機能を2人以上で別々に修正した場合
こういうときの対応ができるような便利な機能がGitにはある。
マージとプルリクエスト
マージ=ブランチを統合すること
プルリクエスト=マージを依頼すること。他の人が変更をチェックするのでレビューとも言う4
プッシュ
プッシュ=ローカルリポジトリと同じブランチをリモートにも作成すること
マージコミット、スカッシュ、リベース
Create a merge commit
Squash and merge
Rebase and merge
プルとフェッチ
指定したリモートリポジトリの内容をローカルリポジトリに取り込む
プル=取得内容がワークツリーにまで反映される
フェッチ=ローカルリポジトリへの取得までしか行わない
Gitの初期設定
code:bash
#コンフィグでユーザ名とメールアドレスを設定
git config --global user.name moriPhone
git config --global user.email ****@gmail.com
#設定一覧を見る
git config --list
#ユーザ名の設定を見る
git config user.name
#メッセージ入力時などのデフォルトのエディタをVScodeに設定
git config --global core.editor "code --wait"
#項目を削除したい場合
git config --global --unset 設定項目名
ローカルリポジトリをつくってみる
code:bash
#現在のフォルダにローカルリポジトリを作成
git init
#Gitの状態確認git
git status
#ステージングエリアにファイルを追加
git add ファイル名
#カレントディレクトリ配下のファイルをすべて追加
git add .
#サブディレクトリのすべてのファイルを追加
git add subDirectory
#差分をチェック
git diff
#ステージングエリアとGitディレクトリの差分をチェック
git diff --cached
#ステージングエリアにあるものをGitディレクトリに登録する
git commit
#コミットメッセージが一行の場合
git commit -m "コミットメッセージが一行の場合は-mをつけて素早くコミットできる"
#ワークツリーの変更を取り消す
#ブランチがある場合は「--」で指定
#指定がない場合は「--」のみ
git checkout -- ファイル名
#ステージングエリアへの登録を取り消す
# =最後のGitディレクトリの状態まで戻す
#HEAD=「最後のディレクトリの状態」
git reset HEAD ファイル名
#ワークツリーからファイルを削除しステージングエリアに「削除した状態」を登録する
#変更はコミットされてないので「削除した状態」をコミットしたい場合は必ずcommitを使う
git rm ファイル名
git rm -r フォルダ名
#コミット履歴の確認
git log
#差分つきでコミット履歴を確認
git log -p
Gitに管理させたくないファイルを指定する
ローカルリポジトリに「.gitignore」を追加する
code:.gitignore
#サブディレクトリ内にあるtest.txtを無視
subDirectory/test.txt
#ディレクトリごと無視する対象を指定
target/
#アスタリスクを使えば特定の拡張子のファイルを無視できる
*.log
リモートリポジトリをクローンする
code:bash
git clone git@github.com:ユーザ名/リポジトリ名
#たとえばこんな感じ
#ワーキングディレクトリにローカルリポジトリがつくられる
git clone git@github.com:moriteppei/sampleproject
#リモートリポジトリの設定を確認
git remote -v
ブランチをつくる
code:bash
#ブランチをつくる
git branch ブランチ名
#作業するブランチを切り替える
git checkout ブランチ名
#使用中のブランチを確認する
git branch4
リモートリポジトリにローカルリポジトリを反映させる
code:bash
#リモートリポジトリにブランチを作成
git push プッシュ先のリモートリポジトリの名前 プッシュするブランチ名
プルとフェッチ
code:bash
git pull リモートリポジトリ名 ブランチ名
git fetch リモートリポジトリ名
バカだから何度聞いても忘れる
Githubとの違い
参考: いちばんやさしいGit&Githubの教本