# msgid "" msgstr "" msgid "" "title: Browse a git repository at a specific commit\n" "date: 2020-08-14\n" "layout: post\n" "lang: en\n" "ref: browse-a-git-repository-at-a-specific-commit" msgstr "" msgid "" "I commonly use tools like `git log` together with `git show` when inspecting" " past changes in a repository:" msgstr "" msgid "" "But I also wanted to not only be able to look at the diff of a specific " "commit, but to browse the whole repository at that specific commit." msgstr "" msgid "" "I used to accomplish it the \"brute force\" way: clone the whole repository " "in another folder and checkout the commit there:" msgstr "" msgid "" "But git itself allows we to specific the directory of the checkout by using " "the `--work-tree` global git flag. This is what `man git` says about it:" msgstr "" msgid "" "So it allows us to set the desired path of the working tree. So if we want " "to copy the contents of the current working tree into `copy/`:" msgstr "" msgid "" "After that `copy/` will contain a replica of the code in HEAD. But to " "checkout a specific, we need some extra parameters:" msgstr "" msgid "" "There's an extra `-- .` at the end, which initially looks like we're sending" " Morse signals to git, but we're actually saying to `git-checkout` which sub" " directory of `` we want to look at. Which means we can do " "something like:" msgstr "" msgid "" "And with that `` will only contain what was inside `src/` at " "``." msgstr "" msgid "" "After any of those checkouts, you have to `git reset .` to reset your " "current staging area back to what it was before the checkout." msgstr "" msgid "References:" msgstr "" msgid "" "[GIT: Checkout to a specific folder](https://stackoverflow.com/a/16493707) " "(StackOverflow)" msgstr ""