git can I view the reflog of a remote?

Is it possible to view the reflog of a remote? That is, I want to know what the output of git reflog is on another remote machine.

Note, I am not asking for the reflog of remote-tracking branches (such as origin/master), I am asking for what reflog says on the other machine.

  • Why does git am leave modified files lying around? How can I adapt my workflow to do better?
  • Database Schema Migration on Azure with Git Deployment
  • Git couldn't resolve proxy
  • Github asking for credentials only on new repositories
  • Rails 4: Heroku push rejected / Gemfile Issues / GIT Issues
  • How to make Git as safe as possible for beginners?
  • Configure git to use IPv4 instead of IPv6 by default
  • Why is a bare git repo 1/4 the size of a non-bare?
  • 3 Solutions collect form web for “git can I view the reflog of a remote?”

    The answer is basically “no” (except on that machine), because the reflog is a log of locally-made re-assignments of some ref-name. Essentially, every time you run git update-ref -m msg <name> <target> the update is logged … locally: .git/logs/<name> gets a line appended:

    $ git update-ref -m foo HEAD HEAD^
    $ tail -1 .git/logs/HEAD
    2418b6ba8fd0289933c9351260a272b8e410867f 8d945134b0cead535d66af29c8eb4228b5dc3763 [redacted] <[redacted]> 1334106483 -0600     foo
    

    (the thing before the message, in this case foo, is not spaces but rather a tab; I expanded it for SO purposes). Conceptually, everything else that moves a branch tip invokes git update-ref to do it (some are shell scripts and literally do that, others just invoke the C code that does all the file-updating) … and everything in .git/logs makes up the reflog.

    If there were things in the underlying git:// and/or ssh:// protocols that let you get at the reflog, that would do it, but as far as I know there isn’t.

    On the off chance that the remote machine is a github repository,

    1. First use Github’s Events API to retrieve the commit SHA.
      curl https://api.github.com/repos/<user>/<repo>/events

    2. Identify the SHA of the orphan commit-id that no longer exists in any branch.

    3. Next, use Github’s Refs API to create a new branch pointing to the orphan commit.

      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

      Replace <orphan-commit-id> in the above command with the SHA identified in step 2.

    4. Finally git fetch the newly created branch into your local repository.
      From there you can cherry-pick or merge the commit(s) back into your work.

    Check out this article for an actual example.

    On GitHub, if you did by mistake a git push --force on master before to fetch the merged changes and in the meanwhile the merged branch was deleted (yeah, it happened to me), you can look for the merged pull request and go to the Commits section, e.g:

    enter image description here

    Then you go on the last commit and click on the <> button (that has title “Browse the repository at this point in the history”).

    This will bring you to the “deleted” point of history. From here you can:

    • create a new branch and then open a new pull request (recommended if the change comes from another repository).
    • open a new pull request (recommended for commits inside your repository).
    Git Baby is a git and github fan, let's start git clone.