全体像
GitHub flowというバージョン管理の方針に沿って、
バージョン管理を行うための手順メモ
GitHub flowについては
https://qiita.com/onishi_820/items/d98c61e0faa67f417829
前提
リモートリポジトリは社内ファイルサーバ上に置く
Win10
新規作成から最初のコミットまで
01_ディレクトリの作成
02_カラのリモートリポジトリを作る
03_カラのリモートリポジトリをクローンしてローカルリポジトリを作る
04_ローカルリポジトリ上で開発を行う
05_変更内容をローカルリポジトリにコミットする
06_ローカルリポジトリのコミット内容をリモートリポジトリにプッシュする
最初のコミット以降の開発1
リモートリポジトリの最新の内容をローカルリポジトリに反映する
07_ローカルリポジトリ上で、masterブランチをチェックアウトする
08_リモートリポジトリのmasterブランチの変更内容をローカルリポジトリでフェッチする
09_現在いるブランチにリモートリポジトリの内容をマージする(リモートのmaster→ローカルのmaster)
初めて開発ブランチを作成し、開発し、途中で保存するためにプッシュする
10_ローカルリポジトリ上で開発ブランチを1つ作る
11_今作った開発ブランチをチェックアウトする
12_開発を行って、ローカルリポジトリの開発ブランチ上にコミットする
↓次にプッシュを行うが、プッシュ前にmasterブランチを最新の状態にしておく
13_ローカルリポジトリ上で、masterブランチをチェックアウトする(07と同じ)
14_リモートリポジトリのmasterブランチの変更内容をローカルリポジトリでフェッチする(08と同じ)
16_現在いるブランチにリモートリポジトリの内容をマージする(リモートのmaster→ローカルのmaster)(09と同じ)
↓開発ブランチを一時的にプッシュする
17_ローカルリポジトリで、再度開発ブランチをチェックアウトする(11と同じ)
18_その開発ブランチをリモートリポジトリにプッシュする
開発ブランチ作成、開発、初プッシュを行ったあとの2回目以降の開発(masterへのマージはまだ)
まずはローカルリポジトリのmasterブランチを最新にする
19_ローカルリポジトリ上で、masterブランチをチェックアウトする(07と同じ)
20_リモートリポジトリのmasterブランチの変更内容をローカルリポジトリでフェッチする(08と同じ)
21_現在いるブランチにリモートリポジトリの内容をマージする(リモートのmaster→ローカルのmaster)(09と同じ)
つぎにローカルリポジトリの開発ブランチも最新にする(それ以外のブランチは不要※220322実験済)
22_ローカルリポジトリ上で、開発ブランチをチェックアウトする(11と同じ)
23_リモートリポジトリの開発ブランチの変更内容をローカルリポジトリでフェッチする
24_現在いるブランチにリモートリポジトリの内容をマージする(リモートの開発ブランチ→ローカルの開発ブランチ)
25_開発を行って、ローカルリポジトリの開発ブランチ上にコミットする(12と同じ)
26_ローカルリポジトリ上で、masterブランチをチェックアウトする(07と同じ)
27_リモートリポジトリのmasterブランチの変更内容をローカルリポジトリでフェッチする(08と同じ)
28_現在いるブランチにリモートリポジトリの内容をマージする(リモートのmaster→ローカルのmaster)(09と同じ)
29_ローカルリポジトリで、再度開発ブランチをチェックアウトする(11と同じ)
30_その開発ブランチをリモートリポジトリにプッシュする(18と同じ)
masterと開発対象の開発ブランチ以外はローカルに反映していない状態で、プッシュして問題なし。
開発が完了し、デプロイするまで(masterブランチへのマージ~デプロイ)
※プルリクエストはとりあえず略
まずはローカルリポジトリのmasterブランチを最新にする
31_ローカルリポジトリ上で、masterブランチをチェックアウトする(07と同じ)
32_リモートリポジトリのmasterブランチの変更内容をローカルリポジトリでフェッチする(08と同じ)
33_現在いるブランチにリモートリポジトリの内容をマージする(リモートのmaster→ローカルのmaster)(09と同じ)
つぎにローカルリポジトリの開発ブランチも最新にする(それ以外のブランチは多分不要)
34_ローカルリポジトリ上で、開発ブランチをチェックアウトする(11と同じ)
35_リモートリポジトリの開発ブランチの変更内容をローカルリポジトリでフェッチする(23と同じ)
36_現在いるブランチにリモートリポジトリの内容をマージする(リモートの開発ブランチ→ローカルの開発ブランチ)(24と同じ)
37_ローカルリポジトリでmasterブランチをチェックアウトする(07と同じ)
38_開発ブランチをmasterブランチにマージする
(コンフリクトが発生した場合)
39_コンフリクトを解消する
40_コンフリクトを解消したファイルをステージングする(git add)
41_コミットする
42_ローカルリポジトリで開発ブランチを削除する
43_マージ後のmasterブランチをリモートリポジトリにプッシュする
44_リモートリポジトリで開発ブランチを削除する
準備
gitのインストール
git for windowsをインストールする。
https://gitforwindows.org/
改行コードはinputを選択しておく
参考:https://qiita.com/uggds/items/00a1974ec4f115616580
その他インストール時の設定は下記参考。
https://qiita.com/toshibe/items/dcf3dd48fdc74c91b409
git上でメールアドレスとユーザ名の登録
どこのディレクトリでもよいので、エクスプローラ上で右クリック>Git Bash Here
git config --global user.name ****
git config --global user.email @@@@
****は任意のユーザ名
@@@@は任意のメールアドレス
ヒント:プロジェクトごとに設定することもできる。
その場合は対象プロジェクトのディレクトリ内で上記の--globalを--localに変えて実行
本題
01_ディレクトリの作成
共有可能なディレクトリを選んで、カラのディレクトリを作る。
このディレクトリが、リモートリポジトリの器になる。
慣例により、ディレクトリ名の末尾には「.git」をつける
※画像はローカルディレクトリだが、ファイルサーバ上のディレクトリでも大丈夫。
02_カラのリモートリポジトリを作る
さっき作った共有用のディレクトリを右クリック>Git Bash Here
git init --bare --shared
03_カラのリモートリポジトリをクローンしてローカルリポジトリを作る
ローカルの作業フォルダを作っておき、右クリック>Git Bash Hereで、
git clone ***
※「***」はリモートリポジトリのファイルパス。階層区切り記号はバックスラッシュや円マークではなく、フォワードスラッシュを使う。
↓するとこうなる
04_ローカルリポジトリ上で作業を行う
05_コミットする
git commit -m "first commit"
06_プッシュする
git push origin master
最初のコミット以降の開発(開発ブランチ作成~開発ブランチの一時保存のためのプッシュ)
07_リモートリポジトリの変更内容をローカルリポジトリでフェッチする
git fetch origin
これを行うことで、ローカルのリモート追跡ブランチ という特別な場所に、
リモートリポジトリの最新の内容が取り込まれる。
ローカルのリモート追跡ブランチ とは、ローカルのマスターブランチとは違う。
08_念のためローカルリポジトリ上で、リモートリポジトリの変更内容を統合させたいブランチに移動しておく
特にブランチを作っていなければ、下記***は masterとなる。チェックアウトをしていなければはじめからmasterブランチにいるはずなので、
以下の操作は不要。
09_現在いるブランチにリモートリポジトリの内容をマージする
git merge origin/master
この操作を行うことで、ローカルのマスターブランチに、ローカルのリモート追跡ブランチの内容を統合することができる
10_ローカルリポジトリ上で開発を行う。ここで新しいブランチを作る
git branch *** @@@
***は、新しいブランチ名
@@@は、もとにするブランチ名(もとにするブランチ名を省略すると、現在チェックアウトしているブランチをもとに新しいブランチが作られる)
11_今作った新しいブランチをチェックアウトする
git checkout ***
12_そこで開発を行って、ローカルリポジトリの新しいブランチ上にコミットする
13_ローカルリポジトリでマスターブランチをチェックアウトする
14_リモートリポジトリからmasterブランチをフェッチ&マージして最新にしておく
※ここではmasterブランチは触っていない前提。新しいブランチのみで開発を行ったとする。
15_ローカルリポジトリで、再度新しいブランチをチェックアウトしておく
16_その新しいブランチをリモートにプッシュする
git push -u origin ***
***はプッシュするブランチの名前。
リモートリポジトリに存在してない場合は、リモートリポジトリに新しく作られる。
-uは、ローカルリポジトリのブランチに対して、リモートリポジトリ上の同名のブランチを
上流ブランチとして設定するためのオプション(理解甘め。上流ブランチが何なのかの理解は保留)