回答:
機能ブランチ(例:)から次をconfigUpdate
実行:
git fetch
git rebase origin/master
または短い形式:
git pull --rebase
これが機能する理由:
git merge branchname
ブランチから新しいコミットを取得branchname
し、現在のブランチに追加します。必要に応じて、「マージ」コミットが自動的に追加されます。
git rebase branchname
ブランチから新しいコミットを取得し、branchname
変更の「下」にそれらを挿入します。より正確には、現在のブランチの履歴を変更して、に基づいてbranchname
変更を加えます。
git pull
基本的にと同じgit fetch; git merge origin/master
です。
git pull --rebase
基本的にと同じgit fetch; git rebase origin/master
です。
なぜあなたは使用したいgit pull --rebase
のではなくgit pull
?以下に簡単な例を示します。
あなたは新しい機能に取り組み始めます。
変更をプッシュする準備ができるまでに、いくつかのコミットが他の開発者によってプッシュされています。
あなたの場合はgit pull
(マージを使用しています)、変更がコミット自動的に作成されたマージに加えて、新しいコミットによって埋葬されます。
あなたの場合はgit pull --rebase
代わりに、Gitは速く、上流のにご主人を転送しますその後、上にあなたの変更を適用します。
私はそれがそうであることを発見しました:
$ git fetch upstream
$ git merge upstream/master
pull --rebase
のであなたは働かなかったorigin
。あなたがやればそれはうまくいったでしょうgit pull --rebase upstream/master
。
ローカルブランチに切り替えます
> git checkout configUpdate
リモートマスターをブランチにマージする
> git rebase master configUpdate
競合がある場合は、それらを修正し、競合するファイルごとに次のコマンドを実行します。
> git add [path_to_file / conflicted_file](例git add app / assets / javascripts / test.js)
リベースを続行
> git rebase-続行
git rebaseがうまくいかなかったようです。git rebaseの後で、ローカルブランチに変更をプッシュしようとすると、エラーが発生し続けます(「ヒント:現在のブランチの先端がリモートのブランチの背後にあるため、更新が拒否されました。リモートの変更を統合してください(例: 'git pull。 .. ')もう一度押す前。 ")git pullの後でも。最終的に私のために働いたのはgit mergeでした。
git checkout <local_branch>
git merge <master>
私のような初心者であれば、git mergeとgit rebaseの良い記事を以下に示します。 https://www.atlassian.com/git/tutorials/merging-vs-rebasing