2011-11-01 8 views
7

私たちのチームは、GitHubのがはるかにwhat is described hereのように、私たちのワークフローを管理するための要求を引いて使用しています復帰を元に戻す、コミット。受け入れられたプルリクエストを手動で確認する際、プロダクションサーバーに展開する準備ができていないため、そのマージを元に戻す必要があることがあります。開発者が再びプルリクエストを発行しようとした場合はその後

しかし、それは、これらの変更は、元に戻すと、コミットはマスターブランチにすでに存在することを認識し、認識しません。復帰後の最近のコミットだけが含まれますが、本当に必要なのは、復帰したすべてのコミットと新しい作業を再導入することです。言い換えれば、元のプルリクエストを再発行する方法が好きです。

Githubはこの機能をサポートしていないため(つまり、マージを元に戻したり元のプルリクエストを元に戻したり再発行したりしないため)、復帰したマージを元に戻しています。これは間違っていると感じます。

他にどのような方法私はGitの中で同じ目標を達成するために使用することができますか? (またはGitHubのそれが可能だ場合)

+1

ローカルでプルリクエストからコミットをマージして、テストした後にマージを実行したくないと判断した場合は、マージを元に戻すのではなく、マージを元に戻すのはなぜですか? (私はプルリクエストをマージした後で、それを保持するかどうかを決める前にマスターブランチを公開していないと仮定します) –

+0

プルリクエストが受け入れられると自動的にマスターにマージされるので、どんなときも。戻って、私は自分の質問で参照したブログ記事のアドバイスに従っていました。なぜなら、他のプルリクエストに移動してワークフローのボトルネックを最小限に抑えることができたからです。マスターがレポ・コラボレーターに常に利用可能であるという事実のため、リセットが問題を悪化させてしまうのではないかと心配しています。 –

+0

ああ、実際にGitHubでプルリクエストを受け付けています。 (GitHubに実際にマージを依頼する機能は最近追加されました)代わりに、私はあなたのローカルリポジトリに提案されたコミットをフェッチし、マージしてテストします。あなたがそれに満足しているなら、GitHubで受諾されたプルリクエストをマークすることができます。 –

答えて

1

私はあなたがプル要求を扱っているとき、あなたは自動的にGitHubの上にそれらをマージすることを選択しているので、あなたの問題は、ここで発生すると思います。プルリクエストを処理する3つの推奨方法のうちdescribed in the documentation最後のもの(「自動マージ」)を使用していますが、これはrecently implementedのみでした。個人的には、これは明らかに正しい簡単なプル要求に対してのみ適切だと思います。より複雑なものについては、私は、マージに

  • テスト慎重
  • をしようとしているリモート
  • からフェッチする新しいリモート
  • として要求元のリポジトリを追加する

    • すなわち、最初のアプローチを使用したいと思いますあなたが幸せであれば結果を押してください

    これは、マージされたバージョンが公開されていることを意味します。プッシュ。あなたがしたくない場合は、マスターブランチを直前の位置にリセットするだけです。興味の問題として


    、それはあなたが残念マージを元に戻すに終わる行うとどうなるかについての詳細を言って価値があるが、それでも再併合以降のバージョンのオプションを持っている場合がありますその支店のそれが間違っているかもしれませんが、私が理解しているように、その状況に対処する最も簡単な方法は確かに復帰を元に戻すことです。この問題の詳細は、Linux Torvaldsのthis post from the Pro Git bloganother discussion of the same problemで詳しく説明されています。

  • +0

    こんにちはマーク - 私は前の2つの記事を読んだことがあります。あなたに感謝しています。私はあなたの提案を実装したいと思いますが、私たち組織のメンバーの誰もGithubのフォークを持っていません。彼らは単にリポジトリからクローンを作成します。彼らの仕事。しかし、私はすべての "リモコン"を1台の共有マシンにセットアップして、それをテストしてテストできるようにすることができるかもしれません。大きなハードルは、展開/レビュープロセスを自動化することです。洞察に感謝します! –

    +0

    @Chip Castle:問題ありません。実際には、機能ブランチに進んでいればさらに簡単です。遠隔地を追加する必要はありません。ちょうど 'git fetch origin'を実行し、正しいリモート追跡ブランチからマージを試みてください。 –

    +0

    Hmmm ...現在のプロセスでは、CIが合格した後、QA担当者が手動で確認する必要があります最新のコピーを入手するためにJenkinsを "git pull --rebase origin master"に設定し、機能ブランチと "git rebase -i"をチェックアウトして、テストスイートを実行する前にすべてが最新であることを確認する必要があります。それが合格すれば、QAがレビューするテストサーバーに自動展開することができます。その後、すべてが合格すれば、プルリクエストを受け入れることができます。それはマスターにマージする唯一のアクションだからです。それは多くの助けになるかもしれません。これについてあなたの考えを教えてください。ありがとう! –

    0

    私は皆さんには異なるアプローチをとることをお勧めします。復帰と復帰のワークフローは私にとって非常に混乱しているようです。あなたが解決しようとしている実際の問題は、別の方法で取り組むことができます。

    私は二つのブランチを使用するようにワークフローを変更示唆しています。 1つの安定したブランチ(master)と1つの開発ブランチ(develop)。すべての作業は、developブランチ、または別々のトピックブランチに入ります。プルリクエストは常にdevelopブランチに対して提出され、承認されるとdevelopにマージされます。

    masterは当初developの分岐します。developが安定した状態ですぐにmasterにマージします。 masterは現在の安定版リリースです。

    これは、大まかにnvie's "A successful Git branching model"に基づいています。

    +0

    私は前にその記事を読んだことがあります。それは確かに従うべき素晴らしい方法ですが、私たちのチームにとってうまくいっていないようです。我々はすでに、Github Pull Requestを介してマスターにマージされた後、機能ブランチとCIランを使用しているので、私たちがしばらく試した開発ブランチを持つことは、管理するだけの作業でした。さらに、テストスイートを使用しても、マスターが不安定になる機会があったため、チームに大きな影響を与えませんでした。しかし、私はこれを今後も心に留めておきます。あなたの提案をもう一度おねがいします。 –

    0

    機能別ブランチの連隊ができたら、好きな機能でリリース候補を再構築できます。あなたは「マージを元に戻す」する必要はありません。

    さらに読書:https://plus.google.com/109096274754593704906/posts/R4qkeyRadLR

    追加の洞察力のためにもコメントを参照してください。それは私たちのために本当にうまくいく。