私は2つのブランチを持っています。ステージングとベータ。ステージングにはコード(ファイルを含む)があり、それはまったく必要ありません。ベータでステージングを完全に上書きして、それらのファイルやコードがステージングからベータにマージされないようにするにはどうすればよいですか。
私はこれを行うことをお勧めする人もいます:
git checkout staging
git merge -s ours beta
しかし、既存のファイルが「コードの競合」になるとは思わないため、削除されません。私が間違っている?私が正しい場合、これをどのように達成しますか?
staging
を単純に削除し、beta
に基づいて再作成できます。
git branch -D staging
git checkout beta
git branch staging
気にしない場合staging
の古い履歴については、単に再作成できます。
git checkout beta
git branch -f staging
あなたが気にするならstaging
の古い歴史について、物事はもっと楽しくなる:
git checkout staging # First, merge beta into staging so we have
git merge -s theirs beta # a merge commit to work with.
git checkout beta # Then, flip back to beta's version of the files
git reset --soft staging # Then we go back to the merge commit SHA, but keep
# the actual files and index as they were in beta
git commit --amend # Finally, update the merge commit to match the
# files and index as they were in beta.
気が変わった場合に備えて、名前を変更することをお勧めします。
git branch -m staging staging_oops
git checkout beta
git branch staging
あなたが本当にその余分なブランチを持つのを我慢できない場合:
git branch -D staging_oops
ステージングの履歴が問題にならない場合は、単にこれを行うことができます。
git checkout staging
git reset --hard beta
上記のコマンドの後にステージングの履歴が消え、stagingがbetaブランチ。