私の意見では、現在のマスターにすべてがコミットされていることを確認してから、そこから新しいブランチを作成してください。その後、ローカル マスターをリモート マスターにハード リセットします。次に、それらの変更をリベースまたはチェリーピックします。次のようなもの:
git branch tmp-master
git fetch origin
git reset --hard origin/master
以下を使用して、2 つのブランチの違いを簡単に視覚化できます。
git log --decorate=short --oneline --graph --all
他のコミットをチェリーピックし、競合を修正するのがおそらく最も簡単ですが、リベースを試すこともできます。より具体的な手順が必要な場合はお知らせください。
アップデート:
ここまで来たら、次のことを試すことができます (からmaster
):
git merge tmp-master
ただし、コミット履歴をよりクリーンにするために、次のことを試してください。
git checkout tmp-master
git rebase master
git checkout master
git merge --ff tmp-master
git branch -d tmp-master
git push origin master
これにより、ローカルのコミットが取得され、リモートの変更の上に再適用されます。基本的に同じ作業を 2 つの異なるマシンで行っているため、多くの「まあ、またマシンを切り替えた」マージ コミットは必要ないでしょう。
現在、競合が発生する可能性があります。それらの世話をするにはいくつかの方法があります。競合があり、ローカルの変更が優先されることがわかっている場合は、次の手順を実行します (tmp-master
ブランチから想定し、リベースで競合があると仮定します)。
git rebase --abort
git branch tmp-master-save
git rebase -X theirs master
次に、上記の手順から続けて、すべてが正常に見えるかどうかを確認しますgit checkout master
。tmp-master-save
また、他のブランチを削除することを忘れないでください。安全に保管するためだけに作成しました。これに慣れていない場合は、常に安全メカニズムを用意することをお勧めします。