リモートリポジトリのマスターブランチからクローンプロジェクトを作成していますremote_repo
。新しいブランチを作成し、そのブランチにコミットします。他のプログラマーremote_repo
はmasterブランチにプッシュしました。
次に、ブランチRBをremote_repo
マスターにリベースする必要があります。
これを行う方法?端末に入力するコマンドは何ですか?
リモートリポジトリのマスターブランチからクローンプロジェクトを作成していますremote_repo
。新しいブランチを作成し、そのブランチにコミットします。他のプログラマーremote_repo
はmasterブランチにプッシュしました。
次に、ブランチRBをremote_repo
マスターにリベースする必要があります。
これを行う方法?端末に入力するコマンドは何ですか?
回答:
最初にアップストリームリポジトリから新しいマスターをフェッチしてから、それに基づいて作業ブランチをリベースします。
git fetch origin # Updates origin/master
git rebase origin/master # Rebases current branch onto origin/master
更新:同じことを行うためのより簡潔な方法については、Paul Draperの回答を参照してください。最近のGitバージョンでは、上記の2つのコマンドと同等の簡単な方法が提供されています。
Your branch and 'origin/b1' have diverged, # and have 3 and 2 different commits each, respectively.
ようにgit pull
なります。別のものが必要なようです。これは正しいですか、またはここで何か不足していますか?
git rebase master
第2のコマンド(同じ仕事をしないであろうgit rebase origin/master
から)master
及びorigin/master
ウェル異なるコミットを指してもよい(特に最初のコマンドであったことを考えるとgit fetch origin
、変更し得ます、origin/master
)。
git pull --rebase origin master
# where --rebase[=(false|true|merges|preserve|interactive)]
git pull --rebase=interactive origin master
dev
でrunを実行するとgit pull --rebase origin master
、ブランチだけdev
が変更され、は変更されませんmaster
。--rebase
フラグのドキュメントは、それがしようとしていないと述べているrebase the current branch on top of the upstream branch after fetching
地元の追跡ブランチの変更について、何も。
変更をブランチにコミットした後、チェックアウトmaster
してプルし、リポジトリから最新の変更を取得します。
git checkout master
git pull origin master
次に、ブランチをチェックアウトして、変更をmaster
次のようにリベースします。
git checkout RB
git rebase master
...または1行の最後の2つのコマンド:
git rebase master RB
にプッシュしようとするとorigin/RB
、おそらくエラーが発生します。自分だけが作業しているRB
場合は、強制的にプッシュできます。
git push --force origin RB
...またはgitが適切に構成されている場合は、次のようにします。
git push -f
git push
なしでも実行できます-f
)。
注:リベースについてすでに幅広い知識がある場合は、1つ以下のライナーを使用して高速リベースを行ってください。 解決策: あなたがあなたの作業ブランチにいて、あなたがそれで作業している唯一の人であると仮定します。
git fetch && git rebase origin/master
競合を解決し、コードをテストし、コミットして、新しい変更をリモートブランチにプッシュします。
~: For noobs :~
次の手順は、初めてでgit rebase
、手間をかけずにそれをやりたいと思っている人を助けるかもしれません
ステップ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のリモートリポジトリにプッシュする必要があります。
Yahoooo ...!リベースが完了しました。
また、次のことを検討している場合もあります。
git checkout master
git merge YourBranch
いつ、なぜ?あなたや他の共同開発者による変更が終わったら、ブランチをマスターにマージします。これにより、後で同じブランチで作業したいときに、YourBranchがマスターで最新の状態になります。
~: (๑ơ ₃ ơ)♥ rebase :~
Pulls latest changes from remote master to local master. I always prefer keeping remote master clean and release ready always!
。説明を更新します。
ステップ1:
git fetch origin
ステップ2:
git rebase origin/master
ステップ3:(競合がある場合は修正する)
git add .
ステップ4:
git rebase --continue
ステップ5:
git push --force
1.最初にマスターを更新...
git checkout [master branch]
git pull [master branch]
2. masterブランチでソースブランチをリベースする
git checkout [source branch]
git rebase [master branch]
git pull [source branch] (remote/source branch)
git push [source branch]
ソースブランチがリモートにまだ存在しない場合は、次のようにします。
git push -u origin [source branch]
「et voila ...」
git fetch origin master:master
チェックアウトする必要なく、マスターの最新バージョンを取得します。
したがって、必要なのは次のとおりです。
git fetch origin master:master && git rebase master
👌
git fetch
それもチェックアウトする必要なしにマスターを更新しませんか?それ以外は更新が正しくありgit fetch
ませんgit merge
か?したがって、チェックアウトmaster
した場合、最新のアップデートはありません。だから、機能ブランチにしながら、やって短くはないgit fetch
、その後git rebase origin/master
?これはワークスペースgit rebase master
からリベースしようとするため、実行できません。マージされていないがローカルに座っているmaster
必要がありますorigin/master
。