2016-09-01 7 views
0

私は自分のアプリケーションを設計していましたが、ある時点で、私がやっていることは別のブランチです。ローカルリポジトリへの変更を "マスタ"にコミットしましたが、リモートリポジトリにはコミットしませんでした。"master"ラベルをGitの過去のあるポイントに移動するには?

私は、次の絵を見るのIntelliJの私のVCSログで

enter image description here

すなわち、私は私と遠隔地の2つの開発経路を持っています。

位置は、私がmasterの位置を希望している位置に既にチェックアウトしていることを示しています。

ここにマスターを置くのはどうですか?この操作の名前は何ですか?マージ?ベース?または何?

ブランチをAsyncIntegrateとし、マスターをorigin/masterと同期させたいとします。私はこれらの平行線を結合する準備ができていません。

申し訳ありませんUPDATEは、最終的に私はorigin/masterがどこへmasterを移動したい:

enter image description here

私はこのことを考えていたが2つの段階で行われるべきです。

UPDATE 2

私はIntelliJのから次のコマンドを起動した場合、それは正しいでしょう:あなたはと呼ばれる新しいブランチにあなたの現在の作業ブランチをシフトしたいよう

enter image description here

+0

これははっきりしません。リモートのマスターをあなたがローカルに持っているものか、それ以外のもので上書きしたいと言っていますか? –

+0

@TimBiegeleisen私の更新を見てください – Dims

+0

私はあなたに以下の応答を与えました。あなたの文言は完全にはっきりしていませんが、あなたの前提についての私の前提が正しければ残りはうまくいくはずです。 –

答えて

3

これが聞こえますAsyncIntegrateを入力し、ローカルmasterorigin/masterにリセットします。

は機能ブランチを作成します。

git checkout master 
git checkout -b AsyncIntegrate 

原点/マスターにあなたのローカルマスタをリセットします。

git fetch 
git checkout master 
git reset --hard origin/master 

上記git fetchステップが重要であり、そのため、無視すべきではありませんあなたのローカル追跡支店origin/masterの現在の状態を更新します実際のリモートmasterブランチ。なんらかの理由で(おそらく失効した)origin/masterを使用する場合は、この手順を省略できます。

更新:

ここで起こること壊滅的な何かのために少しのチャンスがあるので、深呼吸をしてリラックス。ローカルのmasterブランチで作業した作業(おそらく間違っている作業)はすべて、AsyncIntegrateという新しいローカルブランチで安全です。そしてあなたのローカルのmasterは、単にあなたがしたい場所であるリモートの状態と単純に同期します。

あなたが以前にコミットしていたコミットを失ったとしても、いつでもReflogから回復できます。

+0

2番目の 'git checkout master'の目的は何ですか?私は 'git fetch'の後でまだ' master'になるでしょう? – Dims

+0

私はあなたが間違っている可能性を最小限に抑えるために、可能な限り独立した手順を作りました。はい、両方のステップを連続して行う場合、2番目の 'git checkout master 'は冗長でスキップすることができます。 –

+0

'git reset -hard origin/master'の後にディスク上のファイルがどうなりますか?コミット 'origin/master'からサーバからのファイルに置き換えられますか? – Dims

関連する問題