Git マージエラー 質問する

Git マージエラー 質問する

完璧に動作するコードを含むという 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-out9-sign-in-outmasterwRARの回答以前のマスター ブランチを誰かと共有していた場合、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

おすすめ記事