私が持ってBranchAいるのは、113コミット前のものBranchBです。
しかし、私はBranchAマージされBranchBたからの最後の10個程度のコミットのみを必要としています。
これを行う方法はありますか?
私が持ってBranchAいるのは、113コミット前のものBranchBです。
しかし、私はBranchAマージされBranchBたからの最後の10個程度のコミットのみを必要としています。
これを行う方法はありますか?
回答:
このgit cherry-pick <commit>コマンドを使用すると、(任意のブランチから)1つのコミットを取得し、基本的には作業中のブランチでそれをリベースできます。
Pro Gitブックの第5章では、図などを使用して、私ができるよりもよく説明しています。(リベースの章も良い読み物です。)
最後に、別のSOの質問で、チェリーピッキングとマージとリベースについていくつかの良いコメントがあります。
Aが分岐していて、masterそれにいくつかの作業を行って、をB介して子コミットを作成するとしEます。たとえばE、から1行だけ追加されたとしましょうD。あなたの場合git cherry-pick Eにmaster、それが適用されないすべての変更をA通じEにmaster支店、またはそれがないだけに変更を適用DするE、すなわち、それはにのみその1行を追加しますかmaster?前者の場合、どうすれば後者を達成できますか?(手動でのコピーと貼り付けは別として)
出典:https : //git-scm.com/book/en/v2/Distributed-Git-Maintaining-a-Project#Integrating-Contributed-Work
導入された作業をあるブランチから別のブランチに移動するもう1つの方法は、それをチェリーピックすることです。Gitのチェリーピックは、単一のコミットのリベースのようなものです。コミットで導入されたパッチを取得し、現在のブランチに再適用しようとします。これは、トピックブランチに多数のコミットがあり、そのうちの1つだけを統合したい場合、またはトピックブランチに1つだけのコミットがあり、リベースを実行するのではなくチェリーピックしたい場合に便利です。たとえば、次のようなプロジェクトがあるとします。
commit e43a6をmasterブランチにプルしたい場合は、
$ git cherry-pick e43a6
Finished one cherry-pick.
[master]: created a0a41a9: "More friendly message when locking the index fails."
3 files changed, 17 insertions(+), 3 deletions(-)
これはe43a6で導入された同じ変更を引き出しますが、適用される日付が異なるため、新しいコミットSHA-1値を取得します。これで、履歴は次のようになります。
これで、トピックブランチを削除して、プルインしたくないコミットを削除できます。