2017-01-19 10 views
1

私は自分のコードに問題が私は戻って最後に、このコマンドを使用してコミットにロール持っていた:、私はコマンド「Gitのブランチ」を発行したときにハードリセット後にGitブランチはどこにありますか?

git reset --hard <7-digit-hash> 

今、私はちょうど私の現在のブランチを見ていない私のmasterブランチと私が持っていた別の支店。彼らに何が起こりました?物事を変える方法はありますか?前のようにすべての枝を見続けることはできますか?私のコードの問題は、私が戻ってきたので、私はそれを保ち、コミットし、それを私のリモコンに押し戻したいと思っています。ここで何が起こっているのですか?どのように私はこれらの2つのことをするのですか? gitブランチのドキュメントは実際に何が起こっているのかを説明していませんでした。

答えて

2

まず、git statusの出力とgit branch -avvの出力を確認します。これは、現在の状態をより詳細に把握できるようにするためです。

git repoに何か(コミット、ブランチ、タグ)がない場合は、git reflogもチェックしてください。

現在のブランチをチェックアウトしていた場合は、HEADが適切にSHA1にリセットされているため、この部分は問題ありません。

+0

ありがとうございました。 git statusは何も役に立ちませんでした。私は "git branch -avv"を実行し、ローカルの "dev"ブランチ(私が作業していたブランチ)とリモート/起点/ HEAD、dev、およびmasterを見ることができました。私はその後、 "git co master"を実行して、私のmasterブランチ(devの子孫)がまだそこにいて、 "私に心配している新しいブランチ 'Master'に切り替えました。 gitは元のmasterブランチに切り替えるのではなく、全く新しい* masterブランチを作成しましたか?それは本当に悪いです。私はちょうど私の復帰した作業コードを持っているdevをコミットし、私の元のマスターにdevをマージしたい。 – William

+0

@Daveマスターかオリジン/マスターを見ましたか?ここでも、ローカルのマスターブランチを持っていれば、git reflogでそれを見ることができます。 – VonC

+0

@Dave「master」のローカルコピーを何らかの形で削除したようです。 'git co master'を実行すると、' origin/master'と同じ場所にある 'master'という新しいローカルブランチを作成しました。これは"リモートトラッキングブランチ "と呼ばれます。つまり、リモートリポジトリの 'master'のローカルコピーです。ローカルの 'master'ブランチを削除する前に' git push 'を実行した場合、 'origin/master'は' master'と同じコミットになります。 'git log --all --oneline --decorate'を使って、各ブランチの位置を知ることができます。 –

2

git resetは、現在のブランチにのみ影響します。それでも、それは枝を動かすだけです。それは削除されません。他の支店も削除されません。

何らかの理由で、他のコマンドでmasterのローカルコピーを削除しました。 git co masterを実行したときは、origin/masterと同じ場所にあるmasterという名前の新しいローカルブランチを作成しました。 origin/のブランチを理解するには、いわゆる「リモートトラッキングブランチ」について学ぶ必要があります。これらは、リモートリポジトリ内のブランチのローカルコピーです。それらがローカルコピーであることに注意してください。 git pushgit pull、またはgit fetchのように、リモートと対話するコマンドを実行すると更新されます。

ローカルmasterブランチを削除する前にgit pushを実行した場合、origin/mastermasterと同じコミットになります。 git log --all --oneline --decorateを使用すると、各ブランチの位置を確認できます。これは、masterが正しいコミットに戻ったかどうかを知るのに役立ちます。 devは元のmasterよりも既に先行していたため、すべてのコミットが含まれます。 masterを移動する場合は、git checkout mastergit reset --hard <SHA1>を使用します。

関連する問題