2017-02-08 8 views
2

私は自分のプロジェクトを行ってきましたが、ある時点で私は1つのことが機能しなくなったことを発見しました。私は正常に動作していたときに自分のコードの状態を調べる必要があったので、git checkoutを使うことにしました(チェックアウトしたいので)。それで完了しましたGit - origin/master diverged - 放棄されたコミットを放棄

​​

次に、新しいHEADを作成することを期待して2つの新しいコミットを行いました。

On branch master 
    Your branch and 'origin/master' have diverged, 
    and have 2 and 1 different commit each, respectively. 
     (use "git pull" to merge the remote branch into yours) 
    nothing to commit, working directory clean 

私はリベースとマージしようとしましたが、それがないすべてのコミット「捨てられた」から変更して私の頭を上書きしている:それは、代わりに私が得た、しませんでした。

私がしたいのは、新しく作成したコミットを真のundiverged HEADにすることです。出来ますか?

+0

私は 'git rebase'がここでうまくいくと思っています。あなたが正しく使用していないと思います。私たちにコマンドを教えてもらえますか?併合のコマンドも私たちに教えてください。私はあなたもそうすることができると信じています。 – jbu

+0

これを明確にするために、もう少し前からコミットをチェックしていますが、この時点から変更して、古い履歴を新しいコミットに置き換えたいとしますか? –

+0

SHAをチェックアウトする前に変更をマスターにプッシュしましたか? –

答えて

-1

コミットの分岐を外します。次に、そのブランチを古いブランチにマージします。

+0

これは、「私がしたいのは、私の新たに作成されたコミットを、真の解散したHEADにすることです。それは可能ですか?」という質問には答えません。 はい、これは、最初にこのポジションに入る質問者を止めるのに役立ちましたが、今は彼を助けません。おそらくあなたの答えを更新して、実際の答えとこの役に立つアドバイスを提供してみてください。 –

+1

@MatthewHallattそれはむしろ単純です。新しい "頭"から新しいブランチを作成し、そのブランチをマージしてください。これは、新しいブランチが作成されたら、基本的なgitのものです –

0

specific commitaddに新しいコミットをチェックアウトするときに、新しいブランチ&をリモートにプッシュアウトする必要があります。 new-branchmasterにマージした後、masterブランチでコミットします。この時点で

$ git checkout <commit-sha> 

# add a commit 
$ git add . 
$ git commit -m 'message' 

# checkout a new branch (say, feature) 
$ git checkout -b feature 

# sync with remote/master & push to remote/feature 
$ git pull origin master 
$ git push origin HEAD   # push to remote/feature 

# merge 'feature' branch with master and push to remote/master 
$ git checkout master 
$ git pull origin feature   # merge 'feature' branch with 'master' 
$ git push origin master 
+0

私はこのメッセージは、マスターが以来、マージベース/マージポイント以降移動したと言っているように見えます。 – jbu

+0

ああ、前のコメントを無視します。ええ、彼がフィーチャーブランチをプッシュした後、それをマスターにマージする必要があります。 – jbu

+0

はい、回答を更新しました。 'feature'を押してローカル/マスターと' merge'し、リモート/マスターにプッシュします。 –

0

あなたがコミットし、それにHEADを設定し、現在のブランチを作成する

git checkout -b branchname 

を実行することができます。

branchnameがすでに使用されている場合は、-Bが上書きされます。

関連する問題