完璧に動作するコードを含むという git ブランチがあり9-sign-in-out
、これをマスターに変更したいと考えています。現在はマスター ブランチにいます。
$ git branch
9-sign-in-out
* master
ブランチに切り替えようとしています9-sign-in-out
が、次のことができません:
$ git checkout 9-sign-in-out
app/helpers/application_helper.rb: needs merge
config/routes.rb: needs merge
error: you need to resolve your current index first
マスターブランチのエラーをすべて無視して9-sign-in-out
ブランチをマスターにする方法はありますか?gitでしょうか?リベース? しかし、ブランチ内のコードを失いたくありません9-sign-in-out
。
ベストアンサー1
これらのエラー メッセージの意味を理解しておくことは価値があります。これらのエラー メッセージは、needs merge
マージerror: you need to resolve your current index first
が失敗したこと、およびこれらのファイルに競合があることを示唆しています。実行しようとしていたマージが結局悪いアイデアだったと判断した場合は、次のコマンドで正常な状態に戻すことができます。
git reset --merge
ただし、それ以外の場合は、マージの競合を解決する必要があります。gitマニュアルに記載されている通り。
いずれかの方法で対処したら、ブランチをチェックアウトできるはずです9-sign-in-out
。9-sign-in-out
master
wRARの回答以前のマスター ブランチを誰かと共有していた場合、2 つのブランチの履歴が分岐すると、書き換えられた履歴を公開することになるため、相手に問題が生じることになります。
9-sign-in-out
基本的に、トピック ブランチをマージしますmaster
が、トピック ブランチ内のファイルのバージョンを正確に保持します。これは次の手順で実行できます。
# Switch to the topic branch:
git checkout 9-sign-in-out
# Create a merge commit, which looks as if it's merging in from master, but is
# actually discarding everything from the master branch and keeping everything
# from 9-sign-in-out:
git merge -s ours master
# Switch back to the master branch:
git checkout master
# Merge the topic branch into master - this should now be a fast-forward
# that leaves you with master exactly as 9-sign-in-out was:
git merge 9-sign-in-out