54

master ブランチと作業中のbranch_1. branch_1にそのまま「移動」したいmaster。だから私はこのようなものが欲しい:

git checkout master
git merge branch_1 # I don't know what is correct...

私がやったことですが、迷惑な競合で大量のファイルが台無しになりました。branch_1そのため、ファイルを上書きするだけで、競合を回避するまったく同じファイルが master に含まれるようになりました。何か助けはありますか?

4

3 に答える 3

62

両方のブランチでファイルに変更がある場合、競合が発生します。これは良いことです。 ブランチを互いに最新の状態に保つことで、それらの一部を防ぐことができます 。しかし、全体として、対立は悪いことではありません。rebase オプションは、それらの多くを防ぐこともできます。

git merge branch_1

をオンにしている場合master、マージによって期待どおりの変更がもたらされます。

http://www.kernel.org/pub/software/scm/git/docs/git-merge.html

あなたもできる

git rebase branch_1

これにより、変更が取得されbranch_1、マージ コミットなしで master に追加されます。

http://www.kernel.org/pub/software/scm/git/docs/git-rebase.html

于 2013-01-30T13:33:22.690 に答える
4

多分あなたは合併すべきではありませんか?

  1. チェックアウト branch_1
  2. master の変更を branch_1 にリベースする
  3. コードのテスト後に発生した可能性のあるエラーを修正します
  4. チェックアウトマスター
  5. branch_1 の変更を master にリベースする

またはコードで:

git checkout branch_1
git rebase master
(...)
git checkout master
git rebase branch_1

これにより、複数のコミットを 1 つにまとめる機会も得られます。変更セットをより高密度にしたい場合は、履歴内でこれらの迷惑なマージコミットを防ぐことができます。

于 2013-01-30T13:59:32.543 に答える
0

このコードはnetninja youtubeチャンネルから取得しましたが、うまくいきます。

マスター以外のブランチで

  git add .
  git commit -m "msg"
  git checkout master

マスターブランチで

  git merge <non master branch name>
  # fix any conflicts and try to run the software to test any error
  git add .
  # commit w/o any msg, as follows
  git commit
  git push -u origin master
于 2022-03-06T03:24:11.537 に答える