2017-01-25 10 views
0

私は、Gitの新しいクライアントを採用して以来、ここ数ヶ月間だけ使用しています(ソフトウェアのバージョン管理を管理するために使っていたものです)。マスターブランチを別のブランチに置き換える - git merge -s ours?

私は最近developmentブランチを自分のローカルmasterブランチにマージし、masterをサーバーに送りました。サーバーにプッシュする前に私のサイト(Django/Pythonで書かれたWebサイト)を自分のローカル開発マシンでテストしたところ、正しく動作していたようだ(developmentブランチで実装されたバグ修正を含む)。

しかし、サーバーにプッシュした後の変更をテストしたところ、サイトの一部が壊れていたことがわかりました。だから私はサーバー上の古いcommitをチェックアウトし、ライブバージョンは現在、古い「commit」を使用しています。つまり、「分離されたHEAD」状態ですが機能しています。

私のローカルmasterブランチは現在、私がサーバーにプッシュしたバグ修正版(ローカルでは動作していますが、サーバー上にはありませんでした)ですが、サイトでは、masterのバックアップに戻して、developmentブランチをmasterにバグフィックスしたものをマージするようにしたので、コードの「最新の作業状態」から開発しています。私は私のマシン上で持って

枝は、以下のとおりです。

master(それはそれにdevelopmentをマージする前にあったようmaster枝IE)(developmentと他の何かが壊れている、それにマージ)

masterBackup (オリジナルのバグが修正された分岐があるが、何か他のものが今壊れている)

development

したがってmasterBackupは実際にはdevelopmentmasterにマージしてmasterに破棄して以来、現時点で私の仕事の「マスター」ブランチです。 masterBackup私の 'master'ブランチをもう一度作りたいと思い、現在の状態のmasterを破棄/削除することができます。私はまだdevelopmentブランチを持っているので、なぜ/どのようにこれがサイトを壊したのか調べて、masterに再度マージする前にそれを修正してください。

私は受け入れ答えは、私は、次の手順を実行する必要があることを示した上でHow to replace master branch in git, entirely, from another branch?の質問が見つかりました:

git checkout masterBackup 
git merge -s ours master 
git checkout master 
git merge masterBackup 

をしかし、私は決定的なものは、コマンドgit merge -s oursが...これで何をするのかについて見つけることができません私のmasterBackupをブランチmasterブランチにもう一度ブランチさせる方法は間違いありませんか?

答えて

3

コマンドではありませんあなたに適した。コマンドの結果、masterBackupブランチにmasterブランチのすべての変更が含まれるようにします。これはあなたが望むものではありません。

あなただけのマスターブランチとしてmasterBackup分岐仕事をしたい場合は、今masterBackupはmasterブランチを置き換えるです

git branch -m master master1 
git branch -m masterBackup master 

で、名前を変更することができます。しかし、ローカルマスターブランチをリモートマスターにプッシュしたい場合は、git push -f origin masterを使用する必要があります。

0

最も安全なオプションは、すべてが正常に動作している場合後が起こって、あなたのmasterブランチに行われたコミットが切り離さコミット戻すことです。

git revert <SHA-1>^..HEAD # SHA-1 is the earliest commit you want gone 

このオプションはmasterたの上にコミットようになりますその範囲内の各コミットを元に戻します。この後、ブランチは機能的に同じでなければなりません。いつものように作業を続け、いつものように押すことができます。

しかし、希望する場合は、masterの履歴を書き換えることもできます。

警告:このオプションを選択すると、公開されたmasterブランチの履歴が書き換えられます。このオプションは、これに付属する警告を処理できる場合にのみ考慮する必要があります。

あなたは永久に以前にごmasterブランチを元に戻したい場合は

は、次の手順を行うことができますコミット:これはその頭は今、以前の機能がコミットであるように、あなたの地元のmasterブランチを上書きします

git checkout master 
git reset --hard <SHA-1 of earlier commit you want to keep> 

。リモートを更新するために、あなたは経由力プッシュを行う必要がありますので、これは、リモート公表masterブランチの歴史を変えるということ

注:そのポストに

git push --force origin master 
関連する問題