私はかなり長い間GitHubを使用しており、通常は機能ブランチをプッシュしてから、自分でマージしたプルリクエストを開始していました。ブランチをマージした場所を追跡するのに役立つことがわかりました。
しかし最近、Gitの仕組みについてますます読んでいて、merge-commitsを使用してマージしたときに参照できることに気付きました。
では、機能ブランチをマスターにマージする場合はどうすればよいですか:
マスターでmerge-commitを実行してから、アップストリームにプッシュしますまたはローカルブランチをプッシュしてプルリクエストを開始しますか?
2人のチームのプルリクエストの紹介-自分のリクエストをマージしますか?とプロジェクトでの2人のワークフローと公式リポジトリまたはフォークのブランチからのプルリクエストを開く必要がありますか?しかし、それらのどれも私が探しているものに答えていないようです。
コメント
- これらの答えに欠けていると正確に感じていることは何ですか?
- 最初のものは、プルリクエストがピアレビューされることを意図しているという意味からそれについて話します。 2つ目は、ワークフローを提供します。 3つ目は'関連性すらありません。
- これはベストプラクティスまたは維持方法から見ています。優れたgit履歴の観点。
- PRをマージするときは、ブランチをローカルでマージすることでマージします。これにより、マージが正しく適用されることを確認し、結果を公開する前にテストを再実行できます。 GitHub 'のプルリクエストはこのワークフローの単なる形式化であり、Git自体にはPRの概念がありません。
- PRがマージされると、マージが生成されますマスターでコミットするので、'これがgitの履歴に違いをもたらすとは思いません。したがって、'コマンドラインとGithubUIの間の個人的な好み以外に、どちらか一方を使用する理由はないと思います。
回答
git-mergeメカニズム:
マスターでgit merge feature
を使用すると、ブランチfeature
がmaster
にマージされます。 git履歴にmerge-commit
(ブランチを早送りできない場合)を生成します。 merge-commit
を強制的に作成するには、merge
で--no-ff
オプションを使用します。
プルリクエストのマージメカニズム:
GitHubでプルリクエストを開始すると、GitHub Issue
PRのコミットについて、マージする前に話し合ったり話し合ったりできます。 PRがGitHubでマージされると、git merge feature
とまったく同じことを行います。
どうすればよいですか?
したがって、歴史に関する限り、2つの間に違いはありません。
そして、貢献に関する限り、あなたの貢献者は2つの状況で異なることをするために。それらは同じです(ちょっとしたチャットを除いて)。
ベストプラクティス:
また、ベストプラクティスを見つけることができませんでしたが、リポジトリへの寄稿者が1人だけの場合、PRはあまり役に立たないと論理的に言われています。
@lxrecと@amonは、この結論に到達するのに役立ちました。
コメント
- ヒント:
git merge
は、「早送り」できる場合、マージコミットを記録しない場合があります。マージコミットを強制するには、--no-ff
オプションを追加できます。 - githuib.comではなく、ローカルでgit-mergeを実行する方が好きです。 github.comでそのようなことをする必要があります。マスターブランチで直接実行したくないので、本番環境で使用できるようにする前に、最初にステージングモードに設定できる非マスターブランチを使用します。
回答
Ashhar が言ったように、技術的にも歴史的にも違いはありません。小さなチームPRを作成するという余分な手順ではなく、直接マージすることを好みます。ただし、機能のレビュー/フィードバックが必要な場合、またはWIPで複数の人が作業する場合は、PRを開いて追加する傾向があります。 PRの説明に対するタスクのリスト。
マスターに変更がない場合、git merge
は早送りを使用する可能性があるため、使用することをお勧めします。 git merge --no-ff
。私はそうしない傾向があります。
要約すると、PRのみを使用します。 ■話し合いが必要な場合。それ以外の場合は、直接マージします。
コメント
- 'は、プルリクエストに関するディスカッションとフィードバックが可能であることにも言及する価値があります。 自動化されたソースとチームメンバーから来ています。 CIサーバーをセットアップしている場合は、ビルドとテストの結果が得られるため、マスターでのビルドを中断するものをマージすることはありません。