2458

から新しいブランチmasterが作成されます。これを と呼びますtest

master他のブランチにコミットまたは作成し、後で にマージする開発者が何人かいますmaster

の作業に数日かかっており、内部のコミットで継続的に更新しtestたいとします。testmaster

git pull origin masterからやりますtest

質問 1:これは正しいアプローチですか? 他の開発者は、私が作業したのと同じファイルで簡単に作業できたはずです。


作業testが完了し、 にマージする準備が整いましたmaster。私が考えることができる2つの方法は次のとおりです。

A:

git checkout test
git pull origin master
git push origin test
git checkout master
git pull origin test 

B:

git checkout test
git pull origin master
git checkout master
git merge test

--rebase私の理解では、リベースは変更を取得し、masterその上にスタックするため、他の人が行った変更を上書きする可能性があるため、使用していません。

質問 2:これら 2 つの方法のうち、正しいのはどれですか? そこの違いは何ですか?

これらすべての目標は、testブランチで起こっていることを最新の状態に保ち、master後でそれらをマージしてmaster、タイムラインをできるだけ直線的に保つことです。

4

15 に答える 15

3443

これをどのように行うか

git checkout master
git pull origin master
git merge test
git push origin master

リモートブランチからのローカルブランチがある場合、これ以外のブランチをリモートブランチとマージすることに抵抗があります。また、プッシュしたいものに満足するまで、変更をプッシュしません。また、プッシュすることもまったくしません。これは、私とローカルリポジトリ専用です。あなたの説明では、それtestはあなただけのもののようですか?したがって、公開する理由はありません。

gitは常にあなたや他の人の変化を尊重しようとします--rebase。私はそれを適切に説明できないと思うので、Gitの本を見てください-リベースまたはgit-ready:リベースの概要について少し説明します。とてもクールな機能です

于 2011-04-09T00:45:29.660 に答える
97

リベースもマージも、誰の変更も上書きすべきではありません (競合を解決するときに上書きすることを選択しない限り)。

開発中の通常のアプローチは

git checkout master
git pull
git checkout test
git log master.. # if you're curious
git merge origin/test # to update your local test from the fetch in the pull earlier

master にマージする準備ができたら、

git checkout master
git log ..test # if you're curious
git merge test
git push

マージで何かが壊れることを心配している場合git merge --abortは、そこにいます。

マージの手段としてプッシュしてからプルを使用するのはばかげています。また、テストを元に戻す理由もわかりません。

于 2011-04-10T00:17:53.227 に答える
5
git checkout master
git pull origin master
# Merge branch test into master
git merge test

マージ後、ファイルが変更された場合、マージすると「競合の解決」のエラーが発生します。

したがって、最初にすべての競合を解決する必要があり、次にすべての変更を再度コミットしてからプッシュする必要があります

git push origin master

これは、誰がテスト ブランチで変更を行ったかを確認することをお勧めします。

于 2015-04-07T08:55:05.073 に答える
5

@KingCrunchの答えは多くの場合うまくいくはずです。発生する可能性のある問題の 1 つは、テストから最新のものを取得する必要がある別のマシンを使用している可能性があることです。そのため、最初にテストをプルすることをお勧めします。リビジョンは次のようになります。

git checkout test
git pull
git checkout master
git pull origin master
git merge test
git push origin master
于 2020-02-28T02:21:08.243 に答える