全体像
新規作成から最初のコミットまで
01_ディレクトリの作成
02_カラのリモートリポジトリを作る
03_カラのリモートリポジトリをクローンしてローカルリポジトリを作る
04_ローカルリポジトリ上で開発を行う
05_変更内容をローカルリポジトリにコミットする
06_ローカルリポジトリのコミット内容をリモートリポジトリにプッシュする
最初のコミット以降の開発
(masterブランチで開発を行う場合)(あらたなローカル開発環境を使う場合)
07_リモートリポジトリの変更内容をローカルリポジトリにクローンする
08_ローカルリポジトリ上で開発を行う(04と同じ)
09_変更内容をローカルリポジトリにコミットする(05と同じ)
10_ローカルリポジトリのコミット内容をリモートリポジトリにプッシュする(06と同じ)
(masterブランチで開発を行う場合)(既存のローカル開発環境を使う場合)
07_リモートリポジトリの変更内容をローカルリポジトリでフェッチする
08_ローカルリポジトリ上で、リモートリポジトリの変更内容を統合させたいブランチに移動しておく
09_現在いるブランチにリモートリポジトリの内容をマージする
10_ローカルリポジトリ上で開発を行う(04と同じ)
11_変更内容をローカルリポジトリにコミットする(05と同じ)
12_ローカルリポジトリのコミット内容をリモートリポジトリにプッシュする(06と同じ)
(新しいブランチを作って開発を行う場合)(既存のローカル開発環境を使う場合)
07_リモートリポジトリの変更内容をローカルリポジトリでフェッチする
08_念のためローカルリポジトリ上で、リモートリポジトリの変更内容を統合させたいブランチに移動しておく
09_現在いるブランチにリモートリポジトリの内容をマージする
10_ローカルリポジトリ上で開発を行う。ここで新しいブランチを作る
11_今作った新しいブランチをチェックアウトする
12_そこで開発を行って、ローカルリポジトリの新しいブランチ上にコミットする
13_ローカルリポジトリでマスターブランチをチェックアウトする
14_リモートリポジトリからmasterブランチをフェッチ&マージして最新にしておく
15_ローカルリポジトリで、再度新しいブランチをチェックアウトしておく
16_その新しいブランチをリモートにプッシュする
(新しいブランチで開発を行う場合)
07_リモートリポジトリの変更内容をローカルリポジトリにクローンする
08_マージする?
09_ローカルリポジトリ上で新しいブランチを作成する
10_新しいブランチをチェックアウトする
11_ローカルリポジトリ上で開発を行う(04と同じ)
12_変更内容をローカルリポジトリにコミットする(05と同じ)
13_ローカルリポジトリのコミット内容をリモートリポジトリにプッシュする(06と同じ)
準備
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
最初のコミット以降の開発
(masterブランチで開発を行う場合)(あらたなローカル開発環境を使う場合)
07_リモートリポジトリの変更内容をローカルリポジトリにクローンする
git clone ***
08_ローカルリポジトリ上で開発を行う(04と同じ)
09_変更内容をローカルリポジトリにコミットする(05と同じ)
10_ローカルリポジトリのコミット内容をリモートリポジトリにプッシュする(06と同じ)
(masterブランチで開発を行う場合)(既存のローカル開発環境を使う場合)
07_リモートリポジトリの変更内容をローカルリポジトリでフェッチする
git fetch origin
これを行うことで、ローカルのリモート追跡ブランチ という特別な場所に、
リモートリポジトリの最新の内容が取り込まれる。
ローカルのリモート追跡ブランチ とは、ローカルのマスターブランチとは違う。
08_念のためローカルリポジトリ上で、リモートリポジトリの変更内容を統合させたいブランチに移動しておく
特にブランチを作っていなければ、下記***は masterとなる。チェックアウトをしていなければはじめからmasterブランチにいるはずなので、
以下の操作は不要。
git checkout ***
09_現在いるブランチにリモートリポジトリの内容をマージする
git merge origin/master
この操作を行うことで、ローカルのマスターブランチに、ローカルのリモート追跡ブランチの内容を統合することができる
10_ローカルリポジトリ上で開発を行う(04と同じ)
11_変更内容をローカルリポジトリにコミットする(05と同じ)
12_ローカルリポジトリのコミット内容をリモートリポジトリにプッシュする(06と同じ)
(新しいブランチを作って開発を行う場合)(既存のローカル開発環境を使う場合)
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 origin ***
***はプッシュするブランチの名前。
リモートリポジトリに存在してない場合は、リモートリポジトリに新しく作られる。
ただしこのままだとローカルリポジトリのブランチに上流ブランチが設定されていない状態なので、
次のようにする(上流ブランチが何なのかの理解は保留)
git push -u origin ***
★220315 次、
(既存ブランチ)(既存のローカル開発環境を使う場合)
(異なるブランチ)(既存のローカル開発環境を使う場合)=リモートにあってローカルにないブランチをローカルに持ち込む
https://qiita.com/matsumon-development/items/d3231acccc08c8d74c21
(異なるブランチ)(既存のローカル開発環境を使う場合)
リモートリポジトリとローカルリポジトリとで最新のコミットがそれぞれ異なるブランチで行われているケースを想定する
07_リモートリポジトリの変更内容をローカルリポジトリでフェッチする
git fetch origin
これを行うことで、ローカルのリモート追跡ブランチ という特別な場所に、
リモートリポジトリの最新の内容が取り込まれる。
ローカルのリモート追跡ブランチ とは、ローカルのマスターブランチとは違う。
08_念のためローカルリポジトリ上で、リモートリポジトリの変更内容を統合させたいブランチに移動しておく
特にブランチを作っていなければ、下記***は masterとなる。チェックアウトをしていなければはじめからmasterブランチにいるはずなので、
以下の操作は不要。
git checkout ***
09_現在いるブランチにリモートリポジトリの内容をマージする
git merge origin/master
この操作を行うことで、ローカルのマスターブランチに、ローカルのリモート追跡ブランチの内容を統合することができる
10_ローカルリポジトリ上で開発を行う(04と同じ)
11_変更内容をローカルリポジトリにコミットする(05と同じ)
12_ローカルリポジトリのコミット内容をリモートリポジトリにプッシュする(06と同じ)
プル=フェッチ+マージ である。
参考
https://pointsandlines.jp/env-tool/git-fetch-pull