master、task_one、task_twoの3つのブランチがあります。他の人が行ったすべての更新をプルして、これらの更新をすべての作業に適用したいと思います。
正しいコマンドは何ですか?
master、task_one、task_twoの3つのブランチがあります。他の人が行ったすべての更新をプルして、これらの更新をすべての作業に適用したいと思います。
正しいコマンドは何ですか?
マージの競合が発生する可能性があるため、「すべてを自動的に更新する」という良い方法はありません。これは、単に「常に最新の状態にする」ための良い方法がないことを意味するため、次の質問は、なぜ更新が必要なのかということです。
コードレビューのためにそれらが必要な場合は、
git remote update
に続く
git log refs/remotes/<remote-name>/<branch-name>
他の人が送信したコミットを調べることができます。
それらを自分が行った変更と統合したい場合(リベースについて言及します)、ブランチで実際に作業を行う前に変更を取得するだけで済みます。したがって、作業したいブランチをチェックアウトしたら(そして、現時点で変更を統合する準備ができていると仮定して、理由もなく統合しないでください!準備ができたら統合してください!)
git pull --rebase <remote-name> <remote-branch-name>
<remote-name>から<branch-name>をフェッチし、それに対してリベースします。これは実際には、以下を実行するためのショートカットです(そしてそれと同じです)。
git fetch <remote-name> <remote-branch-name> &&
git rebase <remote-branch-name>
また、特定のブランチにデフォルトのアップストリームリモート/ブランチを設定することもできます。これにより、次のように入力するだけで済みます。
git pull --rebase
将来。これは、実行時間の長いトピックに役立ちます。デフォルトを設定するには、次を使用します。
git branch --set-upstream <local-branch-name> <remote-name>/<remote-branch-name>
要約すると、それは次のとおりです。
更新するブランチごとに、実際に作業を行う準備ができるまで、すべてのブランチを単純に通過することはお勧めしません。
「master」が積極的に開発されている場合、「remote-master」は積極的に開発されています(そしてリベースする必要があります)が、「task_one」と「task_two」は「remote-master」に直接基づいているのではなく、「master」に基づいています"、タスクブランチではなく、" master "から--rebaseをプルするだけで、代わりにマスターの上にリベースするのが理にかなっているかもしれません。例えば:
実際には、git pull --rebase <remote> masterを、ときどきgit rebase masterと混合すると、履歴の複雑さによっては、「正しいことを行う」ことができます。それに依存しないでください、しかし可能性に注意してください。「gitpatch-id」と「gitrebase」がどのように相互作用するか、および「git rebase」がマージでどのように機能するかを理解してから、ワークフローをその単純化に基づいてください。ただし、ワークフローによっては、いくつかの手順を節約できます。
masterから新しいローカルブランチ「merge_work」を作成します。git checkout -b merge_work
次に、task_oneをマージします。git merge task_one
次に、競合を修正してから、 task_twoをマージしgit merge task_two
て競合を再度修正します。
それがすべて完了したら、マスターに移動しますgit checkout master
マージmerge_work:git merge merge_work
注:これは、すべてのブランチがすでにローカルであることを前提としています。