2016-12-29 2 views
0

は、ここで私はgitリポジトリでやったことのタイムラインです:AメッシーGitの状況

  1. upstreamと呼ばれるリポジトリからフォーク、枝master
  2. は、master上の様々な[無関係]変更を行っorigin
  3. にプッシュ
  4. は、トピック別のブランチに対して変更を加える必要があることを認識しました(to,pi、およびcsと呼ばれます)。cherry-pickmaster
  5. プッシュする前に
  6. rebase D topi、およびupstream/master
  7. からcstopiからのPRを作成し、cs
  8. upstream/mastertopiのPRが統合された、 csはありませんでした。 origin/masterから pullupstream/master及びそれらのコミットのほとんどは、実際に upstreamにマージされ、その後に引かれていながら、今、私は、複数のコミット先 upstream/masterのある master枝を残してい topi

を削除master。私がorigin/masterからブランチを作成するたびに、私はこれらのコミットを取り消してブランチをupstream/masterに基づいてオフにするためにrebaseにする必要があります。

私の質問:upstream/masterでさえあるorigin/masterよう

  1. は、どのように私はこの問題を解決するのですか?それとも、これは本当に問題ではなく、回避することができますか?
  2. タイムラインに何が間違っていたのですか?次回は何をすべきですか?

(関連する可能性がある情報:リポジトリはGitHubの上にある、私はUbuntuの16.04のマシン上のgit v2.7.4を使用しています、私は絶対に必要であればorigin/masterpush --forceを行うために準備していますが、私はしないでくださいupstreamを管理している)

+0

Downvoter、説明してください? – shardulc

答えて

1

私も次のコマンドでupstream/masterorigin/masterを作ることができました:。

git checkout master 
git fetch --all 
git reset --hard upstream/master 
git push --force 

強制pushを関与しないが、問題を修正しました。長期的な解決策は、マスターに直接コミットすることではなく、アップストリームからpullを送信する場合は、常に早送りマージになるようにしてください。私のトピックブランチは今やmasterに基づいていて問題はありません。

(注:私はFreenodeの上#git IRCチャンネルで、この中に助けられた。)