2022/06/29¶
共同開発について¶
一つのリポジトリを共同開発者がcloneして共同開発を行うケース[case1]について
おおもとのリポジトリを共同開発者がforkして各リポジトリで開発を行うケース[case2]もあるが、今回は[case1]についてのみ
ここで言うcloneのみでの共同開発は、一つのリポジトリを各共同開発者がクローンすることで、
自由にプッシュ、マージなどができる方法である

[case1]の選択基準¶
簡単な開発
知り合い同士での開発
少人数での共同開発
Gitの取り扱いに不慣れな人がいる
[case1]の流れ¶
共同開発用リポジトリの作成
共同開発用リポジトリへのコラボレーターの追加
各開発者がリポジトリをクローン
各開発者がクローンしたリポジトリでブランチを切って開発
⚠️開発は連携を密にとる必要がある
話し合いで共同開発者が順番に作業を行えたらめんどくさいことは起こらないので。

[case1]でのgit操作の例¶
リポジトリのクローンからブランチを切って開発しプッシュするまでのコマンドライン上での操作例¶
$ git clone https://github.com/GITHUB_USERNAME/REPOSITORY_NAME.git
# developブランチで開発をする場合
$ git checkout -b develop
# at develop
$ git add FILENAME
$ git commit -m "COMMIT MESSAGE"
$ git push origin develop
$ git checkout main
# at main
$ git merge develop
$ git push
or github上でプルリクエストの作成->merge
ブラウザ上のgithub UIでプルリクエストを作成してマージする方法¶
変更したリポジトリ上でpull requests > New pull request > マージするリポジトリ(ブランチ), マージされるリポジトリ(ブランチ)を選択 > create pull request
Merge pull requestでマージ

コンフリクトが発生すると、↓のような画面が出る

Resolve conflictsを押すと、コンフリクト解消のための画面が表示される
> : マージ先のリポジトリ(ブランチ)
< : マージ元のリポジトリ(ブランチ)

差分を確認しながら編集して、編集が完了したらmark as resolvedを押す

後は通常通りマージするだけ
複数の開発者が順番に作業を行う場合¶
順番に開発作業を行えればコンフリクトも発生せずうまくいく

複数の開発者が並行して作業をしている場合¶
順番に開発作業を行うことは現実的に難しい
開発者が並行して作業する場合、いかに話し合いをうまく進めてもリポジトリ上での問題発生は避けられない
コンフリクトが発生すると無駄な工程が増えてしまうので起こらない工夫が大切

直前にリベースをすることによってコンフリクトを事前に避ける
rebaseの部分だけどんなコマンドを使うか例を挙げる
$ git checkout topic1
$ git pull --rebase origin develop

まとめ¶
githubで行う共同開発のうち、一つのリポジトリを共同開発者がcloneして共同開発を行うケースについて調べた
[case2]についてはまた今度まとめる