私はブランチにgit push -f
を行ってしまって、他の人の仕事を失いました。git push -fからの復旧方法?
他の人の仕事が表示されている(アクティビティに表示されている)が、リモートブランチでは表示されませんでした(私が変更をプッシュした場所)。残念ながら、ローカルのレポをリモコンと同期させることはありません。だから私は私の地元に他人のコードを持っていない。それを私の地元に持ち帰り、回復する方法はありますか?
私はブランチにgit push -f
を行ってしまって、他の人の仕事を失いました。git push -fからの復旧方法?
他の人の仕事が表示されている(アクティビティに表示されている)が、リモートブランチでは表示されませんでした(私が変更をプッシュした場所)。残念ながら、ローカルのレポをリモコンと同期させることはありません。だから私は私の地元に他人のコードを持っていない。それを私の地元に持ち帰り、回復する方法はありますか?
何かを行う前に、これらの3つのステップを行ってください。何も想像もできません。Ctrl + C、Ctrl + Vだけです。プロジェクト全体でそれを行い、作業ツリーをバックアップします。リモートサーバーに直接アクセスできない場合は、
git clone
で十分ですが、実際のディレクトリコピーが好きです。
これを済ませたら、他の人はgit push -f
を使ってブランチを再アップロードできます。彼に新しいコミットがある場合は、最後にコミットされたコミットを把握する必要がありますが、実際のコミットが失われることはありません。他の人がgit pull -f
を行った場合でも、git reflog
を使用して自分のローカルブランチを回復できます。
Githubを使用しているので、https://stackoverflow.com/a/35273807/492336と表示されることもあります。どうやらGithubのEvents APIが役に立つかもしれません。
私はgitユーザーではありませんが、数日前に私はこの投稿にクロスを来ました。この問題にも解決策があります。 、バックアップあなたの地元のレポを他のバックアップ彼の男、およびバックアップ彼らは今のようなリモートレポを伝える -
# undo the last commit, but leave the changes available
git reset HEAD~ --soft
git stash
# move to the correct branch
git checkout name-of-the-correct-branch
git stash pop
git add . # or add individual files
git commit -m "your message here"
# now your changes are on the correct branch
これは問題の解決策ではありませんが、ローカルコミットを元に戻す方法です。 – berkes
あなたは、これはあなたのイベントが表示されますREST-API
経由のGitHubのREFLOGにアクセスすることができます。
$ curl https://api.github.com/repos/<user>/<repo>/events
あなたが壊れていたらちょうどそれへの参照を追加コミット:
POST /repos/<user>/<repo>/git/refs
{
"ref": "refs/heads/featureA",
"sha": "aa218f56b14c9653891f9e74264a383fa43fefbd"
}
またはカールで:
$ curl -i -H "Accept: application/json" -H "Content-Type: application/json" \
-X POST -d '{"ref":"refs/heads/featureA", \
"sha":"aa218f56b14c9653891f9e74264a383fa43fefbd"}' \
https://api.github.com/repos/<user>/<repo>/git/refs
... 'push -f'をしないでください。 gitが競合について不平を言うなら、それが最もよくわかっていて、競合を修正すると仮定してください。 –
@sashoalm:他の方法はありませんか? –
失われたコミットのハッシュを知っていますか?このコミットはフェッチ後もローカルリポジトリに保持されますか? –