疑問:ローカルにcloneしたリポジトリを作業して、pull requestを送る際に、リモートの方も更新されてしまった時の対処方法
他社とのgitの運用が初めてで、お客様の方で用意されたgitのリモートリポジトリの構成環境でどうしたらいいのかわからず質問させていただきました。
別の関連サイトと混合になっているリポジトリがあり、自分が担当したサイトの更新をローカルで作業し、リモートリポジトリへ反映する際にどうしたら良いかわからない状況です。
clone
して進めてくださいと言われたものの、最終的なこの合わせこみの段階の工程がわかりませんでした。
調べていると、こういった共同開発でしたら、
GithubですとFork
という機能があってrebase
すると良いなどと色々な解説サイトがあったのですが、
先方が使っている普通のGit(gitolite3
)でどうしたら良いかがわかりませんでした。
gitの構成に関して
gitのリモートリポジトリのディレクトリ構成が下記のようになっています。(先方が使っているので、構成を変えれない)
リポジトリ sample.git ┣ サイトA ┃ ┣ サイトAの構成ファイル ┃ ┗ 多数.... ┣ サイトB ┃ ┣ サイトBの構成ファイル ┃ ┗ 私が今回あげてほしいと言われた箇所、
上記のような構成になっており、私はサイトB
のディレクトリ内しか変更せず、先方はサイトA
のディレクトリ内しか変更しません。
詳細
サイトA
はmainブランチ
で作業が進められています。
上記のgitのリポジトリ構成で、今回私が作業した内容をサイトB
のディレクトリを用意したのでここに保存してほしいと言われました。
早速cloneして作業を進めていますが、先方の方でもmainブランチ
を更新し続けています。
ここで、mainブランチ
ではなく、新しく作業用ブランチdevブランチ
を作成して作業を進めようと考えています。
そしてpush
して、pull request
をした際にいざどうなるのか?疑問になりました。
下記行った作業内容です。
# git cloneでリモートのリポジトリ内容をローカルへ取得 git clone xxx:/sample.git # ローカルのリポジトリ作成 git init # リモートリポジトリの追加 git remote add origin xxx:/sample.git # 作業用ブランチの作成 git checkout -b dev # サイトBの修正とコミット git add xxxx git commit -m "サイトB修正コミット"
この段階でリポジトリ状態は下記の状態です。
●はコミットを表しています。
・mainブランチ(リモート) ● -> ● ----------> ●② ①↘︎ ・devブランチ(ローカル) ● -> ● -> ●③ ①cloneしたタイミング ②先方が更新したサイトAに関するコミット ③ローカルの最新のコミット
現在はここで止まっています。
次にリモートのリポジトリに作成したdevブランチ
をpush
するのかなと思っています。
# devブランチをpush git push origin dev
そして最後に、devブランチの内容をpull request
するのかなと思っています。
しかし、上図の③のコミットには、②にされたサイトAのコミットは含まれていません。
このままpull request
を出すと、コンフリクトが起きてしまうのかなと思います。
これを解決する方法があるのかがわかりませんでした。
下記イメージ画像です。
知りたいこと
私がローカルでサイトB
の更新作業をしている間にも、サイトA
の更新は続きます。
ローカルで作成したブランチdev
をどのようにしてリモートのmainブランチ
と合わせていけばいいのかがわかりません。
私側ではサイトA
は、一切関与しないので、ローカルで作業を進めている間にリモートリポジトリは更新され、最終的にmainブランチ
とdevブランチ
うを合わせる時にmainブランチ
の作業が進んだ分衝突が発生してしまうのでは?と思うのですが、
実際の作業者(pull requestを処理するひと)はこれを気にすることなく、サイトB
だけをmainのブランチ
に合わせ込むことができるのでしょうか?
また、私は先方が助かる!というような状況を作るには、どうすることが最善なのでしょうか?
勉強不足で申し訳ないのですが、ご教示いただければ幸いです。
回答2件
あなたの回答
tips
プレビュー