2016-12-22 4 views
9

私はいくつかの同様の質問があることを知っているが、私の状況は少し異なると思う。GitHubは "このブランチは先行する、Yは後ろにコミットする"と言っ続ける

私が貢献したいGitHubリポジトリがあるとしましょう。 私は自分のGitHubアカウントにそのリポジトリをフォークし、自分のPCのアカウントからフォークをクローンします。ファイン。

問題を処理する前に、まずフォークを「元の」リポジトリと同期させたいと思います。私は自分のアカウントフォークに行き、New Pullリクエストをクリックし、私がベースとしてmineを選択し、元のマスターがヘッドフォークとして選択されていることを確認します。 。 次に、フォークでプルリクエストを作成し、それらの変更をフォークにマージします。 私は地元のレポに行き、git pullを実行します。私はすべてを同期させました。ファイン。

問題は今、私のGitHubアカウントで、「このブランチは先に進む」と言っています。ここで、「X」は上記の同期処理を行った回数です。だから、元のリポジトリ(私のフォークではない)にプルリクエストをするたびに、自分のコードをコミットしていることが表示されますplus X私は自分のフォークで元のリポジトリと同期するためにマージしました。

当然ながら、私はそれらの変更を元のリポジトリにプッシュしたくありません。なぜなら、GitHubがなぜ私にコミットを変更したと言っているのか理解できないからです。

自分のGitHubアカウントで解決しなければならないことは、自分のローカルリポジトリに変更や問題がないので、実際に削除して再度クローンしたからです。

ご意見はありますか?

答えて

18

これらの余分なコミットは、作成したプルリクエストからマージがある可能性があります。

今後、元のレポとフォークを同期する方がはるかに簡単です。あなたは、上流からの変更を同期するたび、その後

git remote add upstream https://github/upstream/repo.git 

行います:あなたの地元のレポでは、最初のクローン後に行う

git pull --rebase upstream master 
git push --force-with-lease origin master 

--rebase--force-with-leaseオプションは、場合にのみ必要となりますあなたは上流のレポにマージされていないコミットをして)

必須警告:リベースは歴史を書き換えているので、これはdangerouことができますs /このブランチで作業している他の人にとっては混乱します。コラボレーションしている相手と行ったことを明確に伝えてください。これは個人的なフォークなので、これはあなたにとって問題ではないと私は考えています。


今すぐあなたの問題を修正してください。

  1. 上記のように上流のリモートを追加します。
  2. upstreamに一致するように、あなたのローカルブランチをリセットします。

    git checkout master 
    git reset --hard upstream/master 
    
  3. あなたはフォークでコミットを作成した場合、あなたはmasterのあなたの更新されたバージョンにそれらをcherry-pickすることができます。あなたが覚えていない場合、または助けが必要な場合は、

    git log --oneline master origin/master 
    

    のいずれかに、上流にコミットを表示する必要があります。私はあなたが1つの分岐のみ、masterを使用していると仮定の上に


。まだお持ちでない場合は、作業中の各機能/バグ修正用に新しいブランチを作成することを強くお勧めします。他のメリットの中でも、以前のPRがマージされるのを待っているときに、別の機能/バグ修正の作業を開始することができます。あなたは masterに直接コミットしたことがない場合は、 --rebaseまたは --force-with-leaseずに同期することができます:

git checkout master 
git pull upstream master 
git push origin master 

をあなたはmasterを更新した後に機能ブランチを更新するには、実行します。

git checkout myfeature 
git rebase master 
git push --force-with-lease origin myfeature # if you have already pushed 
+1

うわー、それは正確に何でした必要だった。あなたが言及した最後の行は、 'git push -force-with-lease origin master#もしあなたが既にプッシュしていたら'私を保存しました。ありがとう! –

+0

ベストアンアー。第3の半分は、私が他の支店で変更を反映させるために探していたものでした。 –

+0

私はこの問題と私のレポを持っており、上記の手順を試しましたが、助けにはなりません。私のコードが更新されたようですが、それは何らかの理由で遅れていると思います。 https://github.com/OpenPCM/openpcm-server – GSUgambit

関連する問題