から新しいブランチmaster
が作成され、これを と呼びますtest
。
master
にコミットするか、他のブランチを作成して、後で にマージする開発者が数人いますmaster
。
での作業に数日かかり、内のコミットをtest
継続的に更新したいとします。test
master
git pull origin master
私はからやりますtest
。
質問 1:これは正しいアプローチでしょうか? ちなみに、他の開発者も私が作業したのと同じファイルで簡単に作業できたはずです。
での作業はtest
完了し、 にマージする準備が整いましたmaster
。考えられる方法は 2 つあります。
答え:
git checkout test
git pull origin master
git push origin test
git checkout master
git pull origin test
バ:
git checkout test
git pull origin master
git checkout master
git merge test
私が使用していない--rebase
のは、私の理解では、リベースは変更を取得しmaster
てその上に自分の変更を積み重ねるため、他の人が行った変更を上書きする可能性があるためです。
質問 2:これら 2 つの方法のうちどちらが正しいでしょうか? 違いは何ですか?
このすべての目標は、test
ブランチで起こっていることを常に最新の状態に保ちmaster
、後でそれらをマージしてmaster
、タイムラインを可能な限り直線的に保つことです。
ベストアンサー1
これをどうするか
git checkout master
git pull origin master
git merge test
git push origin master
リモート ブランチからのローカル ブランチがある場合、このブランチ以外のブランチをリモートとマージするのは気が進みません。また、プッシュしたい内容に満足するまで変更をプッシュしませんし、自分とローカル リポジトリのみに適用されるものは一切プッシュしません。あなたの説明では、それはあなただけに適用されているようですtest
ね。ですから、公開する理由はありません。
gitは常にあなたや他の人の変更を尊重しようとします--rebase
。私はそれを適切に説明できないと思うので、Git ブック - リベースまたはgit-ready: リベースの紹介少し説明をします。これは非常にクールな機能です