リモートの reflog を表示することはできますか? git reflog
つまり、別のリモート マシンでの の出力を知りたいのです。
注: リモート追跡ブランチ (origin/master など) のreflogを求めているわけではありませreflog
ん。
リモートの reflog を表示することはできますか? git reflog
つまり、別のリモート マシンでの の出力を知りたいのです。
注: リモート追跡ブランチ (origin/master など) のreflogを求めているわけではありませreflog
ん。
リモート マシンが github リポジトリである場合は、
まず、Github の Events API を使用してコミット SHA を取得します。
curl https://api.github.com/repos/<user>/<repo>/events
どのブランチにも存在しなくなった孤立した commit-idの SHA を特定します。
次に、Github の Refs API を使用して、孤立したコミットを指す新しいブランチを作成します。
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X POST -d '{"ref":"refs/heads/D-commit", "sha":"<orphan-commit-id>"}' https://api.github.com/repos/<user>/<repo>/git/refs
<orphan-commit-id>
上記のコマンドの を、手順 2 で特定した SHA に置き換えます。
最後にgit fetch
、新しく作成されたブランチをローカル リポジトリに追加します。
そこから、コミットをチェリーピックまたはマージして作業に戻すことができます。
実際の例については、この記事を参照してください。
答えは基本的に「いいえ」です(そのマシンを除く)。reflogは、ローカルで行われたref-nameの再割り当てのログであるためです。git update-ref -m msg <name> <target>
基本的に、更新を実行するたびにログが記録されます... local: .git/logs/<name>
gets a line append:
$ git update-ref -m foo HEAD HEAD^
$ tail -1 .git/logs/HEAD
2418b6ba8fd0289933c9351260a272b8e410867f 8d945134b0cead535d66af29c8eb4228b5dc3763 [redacted] <[redacted]> 1334106483 -0600 foo
(この場合foo
、メッセージの前のものは、スペースではなくタブです。SO の目的で拡張しました)。概念的には、ブランチ ヒントを移動する他のすべてがそれを実行するために呼び出さgit update-ref
れます (一部はシェル スクリプトであり、文字通りそれを実行し、他のものはすべてのファイル更新を実行する C コードを呼び出すだけです) ...そしてすべてのもの.git/logs
が reflog を構成します。
基になる git:// および/または ssh:// プロトコルに reflog を取得できるものがあれば、それは可能ですが、私が知る限り、そうではありません。
GitHub で、マージされた変更を取得する前にマスターで誤って実行しgit push --force
、その間にマージされたブランチが削除された場合 (そうです、私に起こりました)、マージされたプル リクエストを探して [コミット]セクションに移動できます。例えば:
次に、最後のコミットに進み、<>
ボタンをクリックします (「履歴のこの時点でリポジトリを参照する」というタイトルが付いています)。
これにより、履歴の「削除された」ポイントに到達します。ここから、次のことができます。