2017-05-25 3 views
0

私はgithubのリポジトリ上でコマンド元に戻すgitが

git reset --hard 6eb7d13f32cf110a1122206e58df381c000a987e 
git push --force 

を実行してきましたリセットして押してください。問題は、使用した完全なSHAが正しくないことです。今、私のリポジトリの状態はとても古いです。したがって、私はリポジトリを、これらの2つのコマンドを実行する前にプッシュした最後のコミットに戻そうとしています。

git reflogの出力は、第1の出力ラインは、私は元に戻すしたいのですが間違いを指摘

6eb7d13 [email protected]{0}: reset: moving to 6eb7d13f32cf110a1122206e58df381c000a987e 
4d0a0fd [email protected]{1}: pull: Fast-forward 
82859b3 [email protected]{2}: commit: including command to install dependencies 
e3c3ab8 [email protected]{3}: clone: from https://github.com/<user>/<repository>.git 

です。

元に戻すことはできますか?ありがとう。

答えて

0

状態に戻すには、不良リセットの直前で、プッシュ、リセット、再度押します。コミットは依然として存在するはずですが、参照されていないコミットは通常、数週間にわたってハングアップします。 4d0a0fdのように見えます。

git reset --hard 4d0a0fd 

Check everything is ok before pushing! 

git push --force 

これは、プッシュする前に常に躊躇しなければならない理由、特に強制プッシュです。それは間違いを共有する前にすべてが大丈夫であることを確認する瞬間を与えます。

+0

これらのコマンドを使用する前に、あなたは完全に躊躇しています。 OK。しかし、あなたのソリューションについては、私は最後のコミットの完全なSHAを持っていません。このコードは '4d0a0fd'で十分ですか? – tnas

+0

@tnasええ、これは「短いID」と呼ばれ、必要な時間の99.99%です。 Gitは、それが一意であることを保証するだけの十分なIDが必要です。 [特定のコードベースの変更を一意に識別するためには、通常どのように* git sha *が必要であると見なされますか?](https://stackoverflow.com/questions/18134627/how-much-of-a-git-sha-一意に識別する必要があると一般的に考えられている。 'git reflog --no-abbrev-commit'で完全なIDを取得できます。 'git-reflog'は主に' git log -g --abbrev-commit --pretty = oneline'のラッパーであり、コミットを表示するために同じ引数の多くをとります。 – Schwern

+1

ありがとう、そんなに!それは完璧に働いています! – tnas

関連する問題