0

私が取り組んでいるローカル ブランチは、mybranch と呼ばれる master のコピーです。マスターにマージしたいブランチに変更があります。ただし、最終的にブランチを master にマージする前に、mybranch に組み込む必要がある master への更新がありました。

リベースで達成したいのですが、初めて誰かに助けてもらいましたが、あまり意味がありませんでした。私は次のことを試しましたが、私の intellij IDE で強調表示されている mybranch と master で異なるファイルを、>>>>HEAD、ETC でマークされたファイル自体の差分で読み取ったことを覚えています。そのため、正しい変更に更新できましたが、それが表示されません。

これは私がこれまでに試したことです:

$ git checkout master 
$ git pull  // get latest from master
$ git checkout mybranch
$ git rebase master     // get masters updates and integrate them with mine 

この時点で、自分がどこにいるのかわからない...マスターの変更でローカルブランチを更新したいだけです(解決したい競合があり、ブランチにプッシュしてからすべてをマスターに戻す必要があります)。

4

2 に答える 2

2

これは、あなたが説明している非常に一般的なワークフローです。詳細な説明へのリンクを次に示します。

実行する'git rebase master'と、マスターからの最新の変更が現在のブランチにあるはずです (マージの競合が発生する場合と発生しない場合があります)。競合がある場合、git はリベースを一時停止し、それらを解決するように求めます。その後、' git add <file(s)>' でリベースを再開する前に ' 'を実行しgit rebase --continueます。

質問の範囲を超えていますが、リンクをチェックするか、インタラクティブなリベースに関する情報を検索することをお勧めします。コミット履歴を非常にきれいに整理するために使用されます。

于 2013-10-18T17:31:34.663 に答える
1

上記は、「古いマスター」の上の mybranch で行った変更を取得し、単に欠落している変更でマスターを更新する場合は、「更新されたマスター」の上にそれらを適用しました。

  git checkout master
  git rebase mybranch

これにより、master が新しい (master に基づいた) mybranch の HEAD に早送りされます。master と mybranch は、origin/master の子である同じ SHA1 を参照する必要があります。この時点で、git pull からの更新後に master で作業を開始していれば、履歴ツリーの同じ場所にいることになります。

  git push

デイリー ビルドの中断に注意する必要があります ;)

于 2013-10-18T17:08:57.403 に答える