web-dev-qa-db-ja.com

ローカルブランチをリモートマスターでリベースする方法

リモートリポジトリremote_repoからmasterブランチからプロジェクトをクローンしました。私は新しいブランチを作り、そのブランチにコミットします。他のプログラマーはブランチをマスターするためにremote_repoを押しました。ブランチRBをremote_repo masterにリベースする必要があります。これを行う方法 ?端末に入力するコマンドは何ですか?

748
Damir

最初に上流のリポジトリから新しいマスターを取得し、それからあなたの作業ブランチをその場所にリベースします。

git fetch Origin            # Updates Origin/master
git rebase Origin/master    # Rebases current branch onto Origin/master

更新Paul Draperの答えを見てください 同じことをもっと簡潔にする方法について - 最近のGitバージョンは上記の二つのコマンドと同等の簡単な方法を提供します。

1049
Frerich Raabe
git pull --rebase Origin master
# where --rebase[=(false|true|merges|preserve|interactive)]
710
Paul Draper

変更がブランチにコミットされたら、masterをチェックアウトしてリポジトリから変更を取得します。

git checkout master
git pull Origin master

それからあなたのブランチをチェックアウトしてmasterにあなたの変更をリベースしてください:

git checkout RB
git rebase master

または1行の最後の2つのコマンド:

git rebase master RB
146
CharlesB

注: /すでにリベースについての広範な知識がある場合は、迅速なリベースのために1ライナー以下を使用してください。 解決策: あなたがあなたの作業ブランチにいて、あなたがそれに取り組んでいる唯一の人であると仮定します。

git fetch && git rebase Origin/master

競合を解決し、コードをテストし、コミットして新しい変更をリモートブランチにプッシュします。

                            ~:   For noobs   :~

以下のステップはgit rebaseに不慣れで面倒なしでそれをやりたかった人を助けるかもしれません

Step 1: /現時点でYourBranchにコミットや変更を加えることはないと仮定します。私たちはYourBranchを訪問しています。

git checkout YourBranch
git pull --rebase

何が起こった? あなたのブランチで作業している他の開発者によってなされたすべての変更を引っ張り、その上にあなたの変更をリベースします。

ステップ2: 提示された競合を解決します。

ステップ3:

git checkout master
git pull --rebase

何が起こった? リモートマスターからすべての最新の変更を引き出し、リモートマスターにローカルマスターをリベースします。私はいつもリモートマスターをクリーンに保ち、リリースの準備をしています!そして、マスターまたはブランチでローカルに作業することだけを好みます。 gitの変更やコミットを手に入れるまでこれをすることをお勧めします。注:ローカルマスターを保守していない場合は、このステップは不要です。代わりに、ローカルブランチ上で直接リモートマスターを直接取り出してリベースすることができます。私が最初の一歩で述べたように。

ステップ4: 提示された矛盾を解決します。

ステップ5:

git checkout YourBranch
git rebase master

何が起こった? マスターへの再配置が発生します

ステップ6: 競合がある場合は、すべての競合を解決します。解決した競合を追加した後でリベースを続けるにはgit rebase --continueを使用してください。いつでもgit rebase --abortを使ってリベースを中止することができます。

ステップ7:

git Push --force-with-lease 

何が起こった? あなたのリモートYourBranchに変更をプッシュする。 --force-with-leaseはあなたがリベースしている間に他の開発者からYourBranchのために他に入ってくる変更があるかどうかを確認します。これは強制的なプッシュよりも非常に便利です。入ってくる変更があった場合は、変更をプッシュする前にそれらを取得してローカルのYourBranchを更新します。

変更をプッシュする必要があるのはなぜですか? 適切なリベースの後にリモートのYourBranchのコミットメッセージを書き換えるか、それとも競合が解決されたか。その後、ローカルリポジトリで解決した変更をYourBranchのリモートリポジトリにプッシュする必要があります。

ヤフー…!あなたはリベースを成功させました。

あなたもやってみるかもしれません:

git checkout master
git merge YourBranch

いつそしてなぜ? あなたと他の共同開発者による変更が終わったら、ブランチをmasterにマージします。後で同じブランチで作業したいときに、YourBranchをmasterと一緒に最新の状態にします。

                            ~:   (๑ơ ₃ ơ)♥ rebase   :~
78
bh4r4th

git fetch Origin master:masterはそれをチェックアウトする必要なしにmasterの最新版を引き出します。

だから必要なのは

git fetch Origin master:master && git rebase master ????

4
Naz

1。最初にマスターを更新...

git checkout [master branch]

git pull [マスターブランチ]

2。現在、マスターブランチでソースブランチをリベース

git checkout [source branch]

git rebase [マスターブランチ]

git pull [ソースブランチ](リモート/ソースブランチ)

git Push [ソースブランチ]

IFソースブランチがリモートにまだ存在していない場合:do =

git Push -u Origin [ソースブランチ]

"et voila ..."

2
N Djel Okoye