This commit is contained in:
syui 2025-03-22 05:31:19 +09:00
parent eb699510f9
commit 9a82baa0f5
Signed by: syui
GPG Key ID: 5417CFEBAD92DF56

View File

@ -139,3 +139,23 @@ $ git pull
ssh, gitは鍵認証でpasswordを省略できます。自身が管理するprojectは`git`にしましょう。 ssh, gitは鍵認証でpasswordを省略できます。自身が管理するprojectは`git`にしましょう。
### conflict
gitを使っていて一番厄介な事は、おそらくconflict(衝突)でしょう。
例えば、AさんとBさん、Cさんの三人で開発していたとしましょう。
AさんとBさんは二人とも同じcommitからbranchを切って、作業、つまり、commitを進めていました。一つの丸(commit)があり、そこから別々に枝分かれ(branch)して、丸(commit)が進むイメージです。
ここで、Bさんのほうが早くにpull-reqを出し、新しいコードが本体にmerge、取り込まれました。
次にAさんがpull-reqを出します。しかし、mergeしようとすると、できません。conflictが発生したのです。
AさんもBさんも、同じ箇所に別々の機能を実装しようとしていて、Bさんの変更が先に取り込まれていたからです。
さて、この解消にはいくつか方法があります。Aさんがconflictを解消するコードに修正するか、mergeするCさんが解消するかです。
通常は、Aさんがbranchのcommitを最新のコードに対応したものに作り直します。あるいはpull-reqそのものを作り直すかです。通常は前者になります。branchのcommitを進め、conflictが発生しないように修正するのです。この場合、pull-reqを作り直す必要はありません。
修正は、例えば、他の場所に機能を移すか、Bさんの機能を合体させたものを作るかなどの方法があります。