このチュートリアルは超ざっくりとgitについて学ぶの実践編となるため、まずは資料を一読しておくことを推奨します。
また、このチュートリアルはGithubのアカウントが作成してあることが前提となっております。
下記のサイトを参考にアカウントを作成してください。
まずはローカルPCでgitを使える状態にします。
# gitがインストールされているか確認
$ git version
git version <gitのバージョン>
gitのバージョンが表示されればすでにgitがインストールされています。
インストールしてない方は、下記のページからダウンロード、インストールを行ってください。
インストールが完了したらgitの設定をします。
下記のコマンドでgitの自分のユーザを登録しましょう。
$ git config --global user.name "<自分のユーザ名>"
$ git config --global user.email "<自分のメールアドレス>"
これでgitが使える状態になりました。
次に、githubにリモート環境からssh接続できるようにします。 下記のサイトを参考にSSHの設定をおこなてください。
まず初めに、自分のGithubアカウントで使うリモートリポジトリを作成します。
このチュートリアルでは、このリポジトリを自分用に複製して使います。
Gitでは、他人のリポジトリを複製することを fork(フォーク) と言います。では、さっそくforkしましょう。
ページの右上部にあるforkというボタンをクリックします。
すると自分のGithubアカウントのページに行くと、GithubTutorialというリポジトリが作成されているはずです。
これで、自分用のリモートリポジトリが作成できました。
(この説明ページは自分のリモートリポジトリからでも見ることができます)
先ほど作成したリモートリポジトリをダウンロードしてきて、ローカルリポジトリを構築します。
ローカルPCにリポジトリをダウンロードする操作を clone(クローン) と言います。
では、さっそくクローンしましょう。
# リポジトリのクローン
$ git clone [email protected]:<自分のGithubアカウントのユーザID>/GithubTutorial.git
クローンすると、ホームディレクトリにリポジトリが作成されてると思います。
もし指定した場所にクローンしたい場合は、下記のコマンドでクローン先のディレクトリを指定してください。
$ git clone [email protected]:<自分のGithubアカウントのユーザID>/GithubTutorial.git <クローン先のディレクトリ>
クローンしたらちゃんとリポジトリがあるか確認し、リポジトリ(ディレクトリ)に移動しましょう。
# リポジトリの中身を確認
$ ls
GithubTutorial
$ cd GithubTutorial
$ ls
README.md src
これでリポジトリの準備ができました。
まず、ローカルリポジトリの状態を確認します
# リポジトリの状態を確認
$ git status
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
**「ファイルの変更が直接 Master に反映する」**ということが書かれています。
複数人で作業している場合、masterを直接変更すると競合してしまうので、変更作業を行うブランチを作成して、そこで変更を行いましょう。
まず、現在のブランチを確認します。
# ブランチの確認
$ git branch
* master
* マークがついてるブランチが現在いるブランチです。
この結果から、今はmasterブランチにいることがわかります。
では、新しくブランチを作成しましょう。
# ブランチの作成
$ git branch <ブランチ名>
# ブランチの確認
$ git branch
* master
<作成したブランチ>
新しく作成したブランチに移動します
# ブランチの移動
$ git checkout <作成したブランチ>
# 現在のブランチを確認
$ git branch
master
* <作成したブランチ>
これで、新しく作成したブランチに移動することができました。
では早速ファイルの中身を変更してみましょう。
このチュートリアルでは、
src/main.py
または
src/main.c
を変更していきます。
このチュートリアルではsrc/main.pyを変更した際の記述をしていますが、
src/main.cでも操作は変わりません。
好きにファイルの中身を書き換えてみてください。
ファイルを変更したら、その変更をローカルリポジトリに記録します。
まずは変更したファイルを下記のコマンドで指定します。
# ファイルの追加
$ git add -p src/main.py
次に変更内容をローカルリポジトリに反映します。
# 変更の記録
$ git commit -m "<ここに変更した内容を書く>"
これで、ローカルリポジトリに変更を反映することができました。
- ファイルの中身を変更
- git addで変更を記録するファイルを指定
- git commitでローカルリポジトリに反映
この操作を繰り返すことで自分の行った変更を記録していきます。
では、最後に自分の行った変更をmasterに反映します。つまり、他の人が自分の変更したファイルを使えるようにします。
まず最初に下記コマンドでローカルリポジトリの内容をリモートリポジトリに送信します。
# リモートリポジトリに送信
git push -u origin <作成したブランチ>
これで、リモートリポジトリの<作成したブランチ>に変更が反映されました。
上記で行なった変更を、リモートのmasterブランチに反映します。
まず自分のリポジトリのページをブラウザから開きます(このページの上部に行けばOK)
すると、Compare & pull requestというボタンが出現してるのでクリックします。
すると、open pull requestというページに行くので、masterにマージする準備をします。
ここで 「Able to merge」 と表示されていれば、マージすることができます。
Create pull requestからpull requestを作成します。
次のページでmergeをクリックするとマージ完了です。
マージが完了したらDelete branchをクリックして作成したブランチを削除しましょう。
上記の操作でリモートリポジトリのmasterを更新することができました。
しかし、ローカルリポジトリのmasterは最初の状態のままです。
最後にリモートリポジトリの内容をローカルリポジトリに反映します。
まず、現在のブランチをmasterに変更しましょう。
現在いるブランチを確認します。
# ブランチの確認
$ git branch
master
* <作成したブランチ>
# ブランチの移動
$ git checkout master
Swittched to branch 'master'
# ブランチの確認
$ git branch
* master
<作成したブランチ>
この状態でsrc/main.pyの中身をみてみると、最初の状態(変更前)に戻っているはずです。
では、リモートリポジトリのmasterをローカルリポジトリに反映しましょう。
# ローカルリポジトリを最新の状態にする
$ git pull origin master
これで再度src/main.pyを見てみると中身が変更されているはずです。
ローカルも無事更新したので、不必要なブランチは削除しておきましょう。
# ブランチの削除
$ git branch -D <作成したブランチ>
以上がgithubを使ったバージョン管理の流れになります。
他人に見られたくないファイルは.gitignoreに記載してaddできないようにする必要があります。
# .gitignore
.DS_Store
.vscode
# 全ファイルの追加
git add .
git add --all
共有してはいけないファイルを共有するリスクがあるため(パスワードなど)