Skip to content

DNET_PullRequestConflict

nishi_74322014 edited this page Sep 11, 2026 · 1 revision

Pull Requestのコンフリクトの解消

概要

送付する側で解消(推奨)

pull(Gitコマンドの該当節を参照)を使った方法

方法(pull)

  • pullrequestの送付前にpull(Gitコマンドの該当節を参照) & push(Gitコマンドの該当節を参照)する方法。

    git pull <remote>
    
  • conflictは送付する側で解消する。

特徴(pull)

  • pullrequest送付先branchの最新の状態からcommitを取り込んだ状態になる。
  • rebaseと比べると、merge commitが混入して、ログが見難くなる。

rebaseを使った方法

方法(rebase)

  • pullrequestの送付前にrebase & push(Gitコマンドの該当節を参照)する方法。

    git pull --rebase <remote>
    
  • conflictは送付する側で解消する。

特徴(rebase)

  • pullrequest送付先branchの最新の状態から
    branchした後にcommitした状態になる。

  • また、merge commitが混入せず、ログが見やすい。

  • ずーっと、pull(Gitコマンドの該当節を参照) & push(Gitコマンドの該当節を参照)で運用してきたrepository間でrebaseすると、
    かなり昔まで遡ってのコンフリクト解決を強いられることになるので、
    その場合は、pullrequest送付先branchの最新の状態からbranchした後にrebaseした方がイイ。

再分岐する。

pullrequest送付先branchから分岐し直して、ソコに修正を加える。

送付された側で解消

解消例2

解消例1

方法(解消例1)

Githubでコンフリクトが起きた時に提示される方法

  • pullrequestした先のrepositoryをcloneする。
  • cloneしたrepositoryのパスに移動
  • pullrequest先のbranchからbranchを作成
  • 作成したbranchにpullrequest元のbranchをpull(conflictする)
  • 作成したbranchでconflictを解消する(任意)
  • 解消後、作成したbranchでcommitする。
  • branchを切り替え。分岐したbranchとmergeする。
  • merge後に元のbranchをpullrequest先のbranchにpushする。
  • これでpullrequestがマージされる。

※ 結局、Gitコマンドが必要になるので、覚えておいたほうが良い。

手順

  • pullrequestした先のrepositoryをcloneする。

    $ git clone https://github.com/OpenTouryoProject/OpenTouryo.git
    
  • cloneしたrepositoryのパスに移動

    $ cd xxxxxxx (cloneしたパスに移動)
    
  • pullrequest先のbranchからbranchを作成

    $ git checkout -b SymphonyTeleca-nishino develop
    
  • 作成したbranchにpullrequest元のbranchをpull(conflictする)

    $ git pull https://github.com/SymphonyTeleca/OpenTouryo.git nishino
    
  • 作成したbranchでconflictを解消する(任意)

    $ git status
    $ git rm root_easysetup/programs/C#/z_Common2.bat
    $ git rm root_easysetup/programs/VB/z_Common2.bat
    $ git status
    
  • 解消後、作成したbranchでcommitする。

    $ git commit
    
  • branchを切り替える。

    $ git checkout develop
    
  • 分岐したbranchとmergeする。

    $ git merge --no-ff SymphonyTeleca-nishino
    
  • merge後に元のbranchをpullrequest先のbranchにpushする。

    $ git push origin develop
    
  • これでpullrequestがマージされる。

移行メモ

  • 元 Wiki で見出しそのものが他ページ・同ページ内へのリンクになっていた箇所は、 GitHub Wiki では見出しからアンカが生成されるため、 見出しをプレーン・テキストとし、リンクは直下の本文に置いた。
  • PukiWiki のページ内アンカ(#xxxxxxxx)は GitHub Wiki では再現できないため、 同一ページ内のアンカは見出しから生成されるアンカに張り替え、 他ページのアンカを指すリンクは「〜(ページ名 の該当節を参照)」の形に置き換えた。
  • 元 Wiki の行頭空白によるプレフォーマット・ブロックは、 フェンス付きコードブロックにした。
  • 同名の見出し(「方法」「特徴」)が複数あり GitHub Wiki でアンカが 衝突するため、括弧で文脈を補って一意にした。

Tags: 移行, GitHub, Pull Request, コンフリクト, rebase, pull, マージ, Git

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally