From 020c1e77489b772f854bb3288b9c8d2818a6bf9d Mon Sep 17 00:00:00 2001 From: EuAndreh Date: Fri, 18 Apr 2025 02:17:12 -0300 Subject: git mv src/content/* src/content/en/ --- src/content/tils/2020/08/14/browse-git.adoc | 76 ----------------------------- 1 file changed, 76 deletions(-) delete mode 100644 src/content/tils/2020/08/14/browse-git.adoc (limited to 'src/content/tils/2020/08/14/browse-git.adoc') diff --git a/src/content/tils/2020/08/14/browse-git.adoc b/src/content/tils/2020/08/14/browse-git.adoc deleted file mode 100644 index 6b3ff6d..0000000 --- a/src/content/tils/2020/08/14/browse-git.adoc +++ /dev/null @@ -1,76 +0,0 @@ -= Browse a git repository at a specific commit -:categories: git - -I commonly use tools like `git log` together with `git show` when inspecting -past changes in a repository: - -[source,sh] ----- -git log -# search for a the commit I'm looking for -git show -# see the diff for the commit ----- - -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. - -I used to accomplish it the "brute force" way: clone the whole repository in -another folder and checkout the commit there: - -[source,sh] ----- -git clone /tmp/tmp-repo-clone -cd /tmp-repo-clone -git checkout ----- - -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: - -[source,text] ----- ---work-tree= - Set the path to the working tree. It can be an absolute path or a path relative to the current working - directory. This can also be controlled by setting the GIT_WORK_TREE environment variable and the - core.worktree configuration variable (see core.worktree in git-config(1) for a more detailed - discussion). ----- - -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/`: - -[source,sh] ----- -mkdir copy -git --work-tree=copy/ checkout . ----- - -After that `copy/` will contain a replica of the code in HEAD. But to checkout -a specific, we need some extra parameters: - -[source,sh] ----- -git --work-tree= checkout -- . ----- - -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: - -[source,sh] ----- -git --work-tree= checkout -- src/ ----- - -And with that `` will only contain what was inside `src/` at ``. - -After any of those checkouts, you have to `git reset .` to reset your current -staging area back to what it was before the checkout. - -== References - -:so-link: https://stackoverflow.com/a/16493707 - -. {so-link}[GIT: Checkout to a specific folder] (StackOverflow) -- cgit v1.2.3