私は私のmaster
ブランチとdevelop
ブランチを持っています。 master
からdevelop
への変更をマージする必要がありますが、最終的にはdevelop
からmaster
へのすべてをマージします。私は2つの異なるワークフローを念頭に置いています。
git pull Origin master
をdevelop
ブランチにgit merge master
をdevelop
ブランチにこれを行うための最良の方法はどれですか、そしてそれはなぜですか?
リベースには注意してください。あなたが他の人とあなたのDevelopブランチを共有しているなら、rebaseは物事を台無しにすることができます。 Rebaseはあなた自身の地元の支店にのみ有効です。
経験則、ブランチをOriginにプッシュした場合は、リベースを使用しないでください。代わりにマージを使用してください。
このワークフローは私には最適です。
git checkout -b develop
...いくつか変更を加えます...
...通知マスタが更新されました...
...変更をコミットして開発する...
git checkout master
git pull
...それらの変更を開発に戻します...
git checkout develop
git rebase master
...さらに変更を加えます...
...彼らが成長することを約束する...
...それらをマスターに統合する...
git checkout master
git pull
git merge develop
この種のことに対する最善のアプローチはおそらく git rebase
です。それはあなたがmasterからあなたの開発ブランチへ変更を引っ張ることを可能にします、しかしあなたの開発作業の全てを(後でコミットログに)masterからのものの上に残します。あなたの新しい仕事が完了したら、マスターに戻るマージはとても簡単です。
開発ブランチを他の人と共有していないのであれば、masterが更新されるたびにそれをリベースするだけです。そうすれば、開発をマスターに戻してマージしてしまうと、履歴全体にマージコミットはできなくなります。この場合のワークフローは次のようになります。
> git clone git://<remote_repo_path>/ <local_repo>
> cd <local_repo>
> git checkout -b develop
....do a lot of work on develop
....do all the commits
> git pull Origin master
> git rebase master develop
上記のステップは、開発ブランチが常にマスターブランチからの最新の変更の上にあることを保証します。 Developブランチが終了し、masterの最新の変更にリベースされたら、それをマージすることができます。
> git checkout -b master
> git merge develop
> git branch -d develop
私の経験則は、
同名のブランチの場合は
rebase
、それ以外の場合はmerge
。
同じ名前の例としては、master
、Origin/master
、およびotherRemote/master
があります。
develop
がローカルリポジトリにのみ存在し、それが常に最近のOrigin/master
コミットに基づいている場合は、master
と呼び、そこで直接作業する必要があります。それはあなたの人生を簡素化し、実際のものとしてそれらを提示します:あなたは直接master
ブランチで開発しています。
develop
が共有されている場合は、master
を基にしてはいけません。単に--no-ff
でマージしてください。あなたはdevelop
で開発しています。 master
とdevelop
は異なる名前にして、別々にしたいので、名前は異なります。 rebase
と同じにしないでください。