2

これが私の git セットアップです (社内ネットワークでは Git + Atlassian Stash を使用しています):

upstream:
  master

origin (my fork of 'upstream'):
  master
  branch1 (branch of master, with a few commits on top of it)

clone (local; clone of 'origin'):
  master
  branch1 (ahead of 'origin:branch1' by 1 commit)

私がしたいこと:

合併したいupstream:master -> clone:branch1。このマージで競合が発生することはわかっています (branch1他のファイルがアップストリームで変更されたため、ファイルを変更したため)。これが完了したら、変更を にプッシュバックしたいと考えていますorigin:branch1。これには、1 つのコミット + アップストリームからの最新のベースが含まれます (ブランチの最新情報を入手したいmasterのは、そこからブランチを作成したからです)。これに加えて、コミット履歴がきれいで、いたるところにクモの巣が張らないように、リベースしたいと考えています。

もう 1 つの注意点は、git コマンド ラインを直接使用しないことです。Windows では、私は SmartGit を使用しているので、誰かがそのツールの指示を知っていれば、それが最も理想的です。

上記のように適切にマージするにはどうすればよいですか?

4

1 に答える 1

3

他に誰もブランチ 1 を複製していない場合、またはブランチ 1 で作業していない場合は、マスターをアップストリーム/マスターに更新したら、マスターの上にリベースできます。

  • まず、フェッチupstreamします (SmartGit: リモート/プル、「フェッチのみ」を選択)
  • 次にmasterupstream/master(SmartGit: Local/Reset)にリセットします。
  • master の上に branch1 をリベースします (SmartGit:Branchesビューで、ブランチを右クリックして、現在の HEAD を選択したブランチにリベースすることmasterを選択できます)必要に応じて、マージの競合を解決します。Rebase HEADmaster
  • branch1最後に、 to origin(SmartGit: ビューのコンテキスト メニューで、ローカルブランチ上でBranches呼び出すことができます) のプッシュ (プッシュを強制) します。PushPush To

ここに画像の説明を入力

于 2013-10-31T20:58:06.647 に答える