私は9-sign-in-out
というgitブランチを持っていて完璧に機能するコードを持っています、そしてそれをマスターに変えたいのです。私は現在マスターブランチにいます。
$ 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
どうすればすべてのmasterブランチのエラーを無視して9-sign-in-out
ブランチをmasterに変えることができるでしょうか。多分git リベース ?しかし9-sign-in-out
ブランチのコードを失いたくはありません。
これらのエラーメッセージが何を意味するのか理解する価値があります - needs merge
とerror: you need to resolve your current index first
はマージが失敗したこと、そしてそれらのファイルに衝突があることを示します。結局、マージしようとしたことが悪い考えであると判断した場合は、次のようにして通常の状態に戻すことができます。
git reset --merge
ただし、それ以外の場合は、マージの競合、 gitマニュアルに記載されているとおり を解決する必要があります。
どちらかの方法でそれに対処したら、9-sign-in-out
ブランチをチェックアウトできるはずです。 wRAR's answer で示唆されているように、単にあなたの9-sign-in-out
をmaster
にリネームすることに関する問題は、あなたが以前のマスターブランチを誰かと共有した場合分岐すると、書き換えられた履歴が公開されます。
基本的にあなたがしたいことはあなたのトピックブランチ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
git checkout -f 9-sign-in-out # change branch, discarding all local modifications
git branch -M master # rename the current branch to master, discarding current master
git status
で示唆されているように、
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: a.jl
both modified: b.jl
私はgit add
を使ってマージを終えました、そしてgit checkout
はうまく動きます。