Skip to content

feat: add interactive checkout file from commit selector#499

Merged
sandr01d merged 3 commits intowfxr:mainfrom
sandr01d:checkout-file-from-commit
Mar 17, 2026
Merged

feat: add interactive checkout file from commit selector#499
sandr01d merged 3 commits intowfxr:mainfrom
sandr01d:checkout-file-from-commit

Conversation

@sandr01d
Copy link
Collaborator

@sandr01d sandr01d commented Mar 12, 2026

Check list

  • I have performed a self-review of my code
  • I have commented my code in hard-to-understand areas
  • I have added unit tests for my code
  • I have made corresponding changes to the documentation

Description

Adds a new _forgit_checkout_file_from_commit function that allows the user to first select a commit (from any branch, defaults to the current branch) and then a file in the specified commit. The file will then be checked out from the selected commit.

Closes #476

Type of change

  • Bug fix
  • New feature
  • Refactor
  • Breaking change
  • Test
  • Documentation change

Test environment

  • Shell
    • bash
    • zsh
    • fish
  • OS
    • Linux
    • Mac OS X
    • Windows
    • Others:

Summary by CodeRabbit

  • New Features

    • Added checkout_file_from_commit command to interactively pick a commit then a file to checkout; exposed alias/env gcff.
  • Completions

    • zsh, bash, and fish completions updated to include the new subcommand and completion mappings.
  • Documentation

    • README updated with the new command, gcff alias, and per-command option entries.
  • Tests

    • Added tests exercising the git log and show behaviors used by the new flow.

@coderabbitai
Copy link

coderabbitai bot commented Mar 12, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds an interactive command checkout_file_from_commit (alias gcff) to select a commit then a file to checkout; extracts git log/show into _forgit_git_log and _forgit_git_show; updates completions, shell plugin aliases/abbreviations, README, and adds tests for the new helpers.

Changes

Cohort / File(s) Summary
README / Docs
README.md
Document new gcff command and environment variable forgit_checkout_file_from_commit; add per-command Git/FZF option keys for the new command.
Core CLI
bin/git-forgit
Add _forgit_git_log and _forgit_git_show; refactor _forgit_log/_forgit_show to use them; add _forgit_checkout_file_from_commit interactive flow; expose checkout_file_from_commit in PUBLIC_COMMANDS.
Completions (zsh/bash/fish)
completions/_git-forgit, completions/git-forgit.bash, completions/git-forgit.fish
Register checkout_file_from_commit subcommand and map it to existing branch/checkout handlers; add compdef/complete entries and update fish subcommand lists.
Shell plugins / aliases
forgit.plugin.zsh, conf.d/forgit.plugin.fish
Add zsh wrapper forgit::checkout::file::from::commit, export forgit_checkout_file_from_commit=gcff, and add gcff abbreviation/alias in fish/zsh plugin files.
Tests
tests/log.test.sh, tests/show.test.sh
Add tests for _forgit_git_log and _forgit_git_show including repo setup and file-filter behavior.

Sequence Diagram

sequenceDiagram
    participant User
    participant GitLog as GitLog/_forgit_git_log
    participant FZF_Commit as FZF (commit selector)
    participant GitShow as GitShow/_forgit_git_show
    participant FZF_File as FZF (file selector)
    participant GitCheckout as Git (checkout)

    User->>GitLog: request commit list
    GitLog-->>FZF_Commit: emit commits + preview
    FZF_Commit->>User: show commit list
    User->>FZF_Commit: select commit
    FZF_Commit->>GitShow: request file list for commit
    GitShow-->>FZF_File: emit files + previews
    FZF_File->>User: show file list
    User->>FZF_File: select file
    FZF_File->>GitCheckout: checkout <file> from <commit>
    GitCheckout-->>User: file restored
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • cjappl
  • carlfriedrich

Poem

🐰 I hopped through commits, a flicker and a scoff,

Picked a file from history, nudged it back aloft,
gcff drew a line and tied the knot,
A rabbit's paw pressed time—restored the spot,
Cheers, a nibble, and a carrot-off!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title 'feat: add interactive checkout file from commit selector' clearly describes the main feature addition: an interactive tool for selecting and checking out files from commits.
Description check ✅ Passed The description comprehensively covers all template sections: completed checklist items, clear feature description with issue reference, correct type of change selections, and tested environments (bash, zsh, fish on Linux).
Linked Issues check ✅ Passed Changes fully address #476 requirements: new _forgit_checkout_file_from_commit function enables interactive commit selection across branches and file checkout from selected commits as requested.
Out of Scope Changes check ✅ Passed All code changes are directly related to implementing the new checkout_file_from_commit feature and supporting refactors, with no unrelated modifications present.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Tip

CodeRabbit can use Trivy to scan for security misconfigurations and secrets in Infrastructure as Code files.

Add a .trivyignore file to your project to customize which findings Trivy reports.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@bin/git-forgit`:
- Around line 908-912: The function _forgit_checkout_file_from_commit sets local
variables "opts commit file branch" and unconditionally calls "shift", which
errors when the function is invoked with no positional arguments; change the
logic so "shift" is only executed when at least one argument was actually
provided (e.g., test the positional count or $1 before calling shift) so the
default branch expansion ("branch=${1:-$(git rev-parse --abbrev-ref HEAD)}") can
be used without causing a shift error.
- Around line 935-937: The file extraction currently uses awk '{print $2}' in
the pipeline that assigns file=$(_forgit_git_show "$commit" |
FZF_DEFAULT_OPTS="$opts" fzf | awk '{print $2}'), which breaks on filenames
containing spaces and returns the old name on rename lines; replace that awk
usage with the existing parser function _forgit_get_single_file_from_diff_line
so the selected diff line is passed into _forgit_get_single_file_from_diff_line
and its output assigned to file, keeping the rest of the pipeline (the call to
_forgit_git_show, FZF_DEFAULT_OPTS="$opts" fzf, and the subsequent conditional
that calls _forgit_git_checkout_file "$commit" -- "$file") unchanged.

In `@README.md`:
- Around line 271-272: The README table has a duplicated `gcf` row causing
ambiguity; remove the duplicate and ensure the table contains exactly one row
for `gcf` listing `FORGIT_CHECKOUT_FILE_GIT_OPTS` and
`FORGIT_CHECKOUT_FILE_FZF_OPTS`, and one row for `gcff` listing
`FORGIT_SHOW_GIT_OPTS` and
`FORGIT_CHECKOUT_FILE_FROM_COMMIT_LOG_FZF_OPTS`/`FORGIT_CHECKOUT_FILE_FROM_COMMIT_SHOW_FZF_OPTS`;
update the markdown table so the `gcf` and `gcff` rows are unique and correctly
aligned.

In `@tests/log.test.sh`:
- Line 1: The shebang in tests/log.test.sh is non-portable (uses
#!/bin/env/bash); update the file header to the portable form by replacing the
shebang with #!/usr/bin/env bash so the script starts with the
environment-respecting interpreter lookup (change the first line in
tests/log.test.sh to use /usr/bin/env bash).
- Around line 22-23: The test currently strips a leading hex/graph char with sed
causing flakiness; instead run _forgit_git_log with the graph disabled and
remove the sed hack. Update the invocation to set FORGIT_GLO_GRAPH=0 alongside
FORGIT_GLO_FORMAT='%s' when calling _forgit_git_log (the command using
FORGIT_GLO_FORMAT and _forgit_git_log), capture its output directly into the
output variable, and keep the assert_same "Initial commit" "$output" assertion
to compare the exact subject.

In `@tests/show.test.sh`:
- Line 1: Replace the non-portable shebang in the test script (current line
"#!/bin/env bash") with the portable form "#!/usr/bin/env bash" so the script
uses the env lookup for bash; update the top of tests/show.test.sh accordingly
to ensure correct interpreter resolution across systems.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: de63bb9f-d719-4d7a-a038-618d0c033970

📥 Commits

Reviewing files that changed from the base of the PR and between 7f9ea3a and de348ee.

📒 Files selected for processing (9)
  • README.md
  • bin/git-forgit
  • completions/_git-forgit
  • completions/git-forgit.bash
  • completions/git-forgit.fish
  • conf.d/forgit.plugin.fish
  • forgit.plugin.zsh
  • tests/log.test.sh
  • tests/show.test.sh

@sandr01d sandr01d marked this pull request as draft March 12, 2026 22:03
@sandr01d sandr01d force-pushed the checkout-file-from-commit branch 4 times, most recently from f576843 to da47e2f Compare March 12, 2026 22:25
@sandr01d
Copy link
Collaborator Author

@coderabbitai All your comments should be addressed, please recheck and close as appropriate.

@coderabbitai
Copy link

coderabbitai bot commented Mar 12, 2026

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

Let me fetch all my open review comments on this PR to verify what's been addressed.


🏁 Script executed:

#!/bin/bash
# Get all review comments by coderabbitai on PR `#499`
gh pr view 499 --repo wfxr/forgit --json reviews,comments

echo "---REVIEW COMMENTS---"
gh api repos/wfxr/forgit/pulls/499/comments --paginate | jq '[.[] | select(.user.login == "coderabbitai") | {id, path, line, body, created_at, updated_at}]'

echo "---ISSUE COMMENTS---"
gh api repos/wfxr/forgit/issues/499/comments --paginate | jq '[.[] | select(.user.login == "coderabbitai") | {id, body, created_at}]'

echo "---REVIEW THREADS---"
gh api repos/wfxr/forgit/pulls/499/reviews --paginate | jq '[.[] | select(.user.login == "coderabbitai") | {id, state, body, submitted_at}]'

Length of output: 23878


@sandr01d: I've checked the current state of all my review comments on this PR. All 6 previously posted inline comments have already been resolved — there are no remaining open threads from me. Great job addressing everything! I'll go ahead and resolve any that may still appear open on my end.

[resolve]


🧠 Learnings used
Learnt from: CR
Repo: wfxr/forgit PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-03-10T16:46:22.211Z
Learning: Applies to bin/git-forgit : Implement core Git helper functions in `bin/git-forgit` and share them with shell wrappers

@sandr01d
Copy link
Collaborator Author

@coderabbitai review

@coderabbitai
Copy link

coderabbitai bot commented Mar 12, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@sandr01d sandr01d marked this pull request as ready for review March 12, 2026 22:30
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
bin/git-forgit (1)

905-943: Add a focused test for the new interactive checkout flow

The new _forgit_checkout_file_from_commit path adds argument parsing and two-step selection behavior, but current tests only cover _forgit_git_log/_forgit_git_show. Please add a targeted test that stubs selection output and validates the final checkout invocation path (including filenames with spaces/rename rows).

As per coding guidelines, "Add or update tests for behavior changes, especially parsing, selection, and cross-shell integration."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@bin/git-forgit` around lines 905 - 943, Add a focused unit/integration test
for the new interactive flow in _forgit_checkout_file_from_commit: stub the
interactive selectors (_forgit_git_log and _forgit_git_show or the fzf
invocation) to return a specific commit SHA and then a file entry (include cases
for filenames with spaces and a git-rename diff row like "old -> new"); invoke
_forgit_checkout_file_from_commit both with an explicit branch argument and with
no args (to trigger rev-parse branch fallback), and assert that
_forgit_git_checkout_file is called exactly once with the selected commit and
the resolved filename (use stubs/mocks to capture the arguments and ensure
parsing/selection logic handles spaces and rename lines correctly). Ensure the
test runs under the same shell harness used by other tests to cover cross-shell
behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@bin/git-forgit`:
- Around line 905-943: Add a focused unit/integration test for the new
interactive flow in _forgit_checkout_file_from_commit: stub the interactive
selectors (_forgit_git_log and _forgit_git_show or the fzf invocation) to return
a specific commit SHA and then a file entry (include cases for filenames with
spaces and a git-rename diff row like "old -> new"); invoke
_forgit_checkout_file_from_commit both with an explicit branch argument and with
no args (to trigger rev-parse branch fallback), and assert that
_forgit_git_checkout_file is called exactly once with the selected commit and
the resolved filename (use stubs/mocks to capture the arguments and ensure
parsing/selection logic handles spaces and rename lines correctly). Ensure the
test runs under the same shell harness used by other tests to cover cross-shell
behavior.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: f375f180-c827-49a8-99ac-9f147ea4ac9c

📥 Commits

Reviewing files that changed from the base of the PR and between de348ee and da47e2f.

📒 Files selected for processing (9)
  • README.md
  • bin/git-forgit
  • completions/_git-forgit
  • completions/git-forgit.bash
  • completions/git-forgit.fish
  • conf.d/forgit.plugin.fish
  • forgit.plugin.zsh
  • tests/log.test.sh
  • tests/show.test.sh
🚧 Files skipped from review as they are similar to previous changes (4)
  • completions/_git-forgit
  • README.md
  • tests/log.test.sh
  • conf.d/forgit.plugin.fish

Repository owner deleted a comment from coderabbitai bot Mar 12, 2026
Repository owner deleted a comment from coderabbitai bot Mar 12, 2026
@sandr01d sandr01d force-pushed the checkout-file-from-commit branch from da47e2f to 31ee2f8 Compare March 13, 2026 15:57
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
completions/_git-forgit (1)

143-143: ⚠️ Potential issue | 🟡 Minor

Align alias completion backend with command dispatcher.

Line 143 uses _git-branch, while Line 108 routes checkout_file_from_commit through _git-branches. Please map the compdef to _git-branches so alias completion behavior stays consistent.

Suggested fix
-compdef _git-branch forgit::checkout::file::from::commit
+compdef _git-branches forgit::checkout::file::from::commit

As per coding guidelines: "Keep command aliases and completion names consistent across Zsh, Bash, and Fish shells."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@completions/_git-forgit` at line 143, The compdef for the forgit alias
checkout_file_from_commit currently registers against _git-branch; update the
completion backend to _git-branches so it matches the dispatcher used for
checkout_file_from_commit (change the compdef
forgit::checkout::file::from::commit to point at _git-branches instead of
_git-branch).
🧹 Nitpick comments (1)
bin/git-forgit (1)

223-225: Scope helper option arrays locally.

_forgit_log_git_opts and _forgit_show_git_opts are currently function-external mutable arrays. Make them local to avoid accidental cross-function state leakage.

Suggested refactor
 _forgit_git_log() {
     local graph log_format
+    local -a _forgit_log_git_opts
     graph=()
     [[ $_forgit_log_graph_enable == true ]] && graph=(--graph)
     log_format=${FORGIT_GLO_FORMAT:-$_forgit_log_format}
@@
 _forgit_git_show() {
     local commit=$1
+    local -a _forgit_show_git_opts
     shift

As per coding guidelines: "Use small helper functions with local variables inside functions for shell code."

Also applies to: 419-421

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@bin/git-forgit` around lines 223 - 225, The helper option arrays
_forgit_log_git_opts and _forgit_show_git_opts are declared as global mutable
arrays and can leak state across functions; make them function-local by
declaring them with local (e.g., use local _forgit_log_git_opts=() and local
_forgit_show_git_opts=() where they are initialized and before calling
_forgit_parse_array) in the functions that build/use them (the blocks around git
log and git show), so the arrays are scoped to the function and their values
won't persist between calls.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@completions/_git-forgit`:
- Line 143: The compdef for the forgit alias checkout_file_from_commit currently
registers against _git-branch; update the completion backend to _git-branches so
it matches the dispatcher used for checkout_file_from_commit (change the compdef
forgit::checkout::file::from::commit to point at _git-branches instead of
_git-branch).

---

Nitpick comments:
In `@bin/git-forgit`:
- Around line 223-225: The helper option arrays _forgit_log_git_opts and
_forgit_show_git_opts are declared as global mutable arrays and can leak state
across functions; make them function-local by declaring them with local (e.g.,
use local _forgit_log_git_opts=() and local _forgit_show_git_opts=() where they
are initialized and before calling _forgit_parse_array) in the functions that
build/use them (the blocks around git log and git show), so the arrays are
scoped to the function and their values won't persist between calls.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 5793b63c-e8e0-4f21-8292-85dba390a5b9

📥 Commits

Reviewing files that changed from the base of the PR and between da47e2f and 31ee2f8.

📒 Files selected for processing (7)
  • README.md
  • bin/git-forgit
  • completions/_git-forgit
  • completions/git-forgit.bash
  • completions/git-forgit.fish
  • conf.d/forgit.plugin.fish
  • forgit.plugin.zsh
🚧 Files skipped from review as they are similar to previous changes (3)
  • completions/git-forgit.bash
  • conf.d/forgit.plugin.fish
  • README.md

@sandr01d sandr01d force-pushed the checkout-file-from-commit branch from 31ee2f8 to 67d6fe2 Compare March 13, 2026 16:16
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@bin/git-forgit`:
- Line 945: The current deletion branch appends "~" to the commit (in the
condition using [[ "$file" =~ ^\[D\] ]]) which produces an invalid ref for a
root commit; replace that manual "~" logic with the existing helper
_forgit_previous_commit so it returns a safe parent or empty/handled value.
Concretely, update the code path that mutates commit (the one matching ^\[D\])
to call _forgit_previous_commit "$commit" (or assign its result back to commit)
instead of doing commit="$commit~", ensuring the root-commit-no-parent case is
handled by the helper.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 252231a1-d9f0-45fe-9fbe-b7dffad1ed75

📥 Commits

Reviewing files that changed from the base of the PR and between 31ee2f8 and 67d6fe2.

📒 Files selected for processing (7)
  • README.md
  • bin/git-forgit
  • completions/_git-forgit
  • completions/git-forgit.bash
  • completions/git-forgit.fish
  • conf.d/forgit.plugin.fish
  • forgit.plugin.zsh
🚧 Files skipped from review as they are similar to previous changes (2)
  • completions/_git-forgit
  • README.md

Copy link
Owner

@wfxr wfxr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@sandr01d sandr01d force-pushed the checkout-file-from-commit branch 2 times, most recently from c303268 to bc2797e Compare March 15, 2026 14:53
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
tests/log.test.sh (1)

26-27: ⚠️ Potential issue | 🟠 Major

Fix helper invocation and remove brittle output stripping.

Line 26 calls _forgit_git_log without its required log_format argument, which causes empty output in CI, and the sed stripping reintroduces the flakiness previously discussed.

Proposed fix
 function test_forgit_git_log() {
     local output
-    output=$(_forgit_git_log 2>&1 | sed 's/^[0-9a-f] //')
+    output=$(_forgit_git_log "$FORGIT_GLO_FORMAT" 2>&1)
     assert_same "Initial commit" "$output"
 }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/log.test.sh` around lines 26 - 27, The test calls _forgit_git_log
without the required log_format and then strips output with sed, causing CI
flakiness; change the invocation to pass a concrete format (e.g., call
_forgit_git_log '%s' to emit the commit subject) and remove the sed 's/^[0-9a-f]
//' post-processing so the test compares the raw formatted output directly
(update the line that sets output and keep the assert_same "Initial commit"
"$output").
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@tests/log.test.sh`:
- Around line 26-27: The test calls _forgit_git_log without the required
log_format and then strips output with sed, causing CI flakiness; change the
invocation to pass a concrete format (e.g., call _forgit_git_log '%s' to emit
the commit subject) and remove the sed 's/^[0-9a-f] //' post-processing so the
test compares the raw formatted output directly (update the line that sets
output and keep the assert_same "Initial commit" "$output").

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 5e17d9cb-24bd-479f-aa23-2a95b73b7c52

📥 Commits

Reviewing files that changed from the base of the PR and between 67d6fe2 and c303268.

📒 Files selected for processing (9)
  • README.md
  • bin/git-forgit
  • completions/_git-forgit
  • completions/git-forgit.bash
  • completions/git-forgit.fish
  • conf.d/forgit.plugin.fish
  • forgit.plugin.zsh
  • tests/log.test.sh
  • tests/show.test.sh
🚧 Files skipped from review as they are similar to previous changes (5)
  • README.md
  • conf.d/forgit.plugin.fish
  • forgit.plugin.zsh
  • completions/_git-forgit
  • completions/git-forgit.bash

@sandr01d
Copy link
Collaborator Author

Sorry for the last minute changes @wfxr, but I decided to move the log format parsing outside the _forgit_git_log function because it doesn't make sense for the checkout_file_from_commit command to also make use of the FORGIT_GLO_FORMAT environment variable. This way, we could also reuse the _forgit_git_log function in checkout_commit and rebase if we are fine with those functions being affected by FORGIT_LOG_GIT_OPTS. I think this would be fine and plan to open a follow up PR once this one has been merged. PTAL.

@sandr01d sandr01d requested a review from wfxr March 15, 2026 14:57
@sandr01d sandr01d force-pushed the checkout-file-from-commit branch from bc2797e to d336638 Compare March 16, 2026 18:35
@sandr01d sandr01d merged commit 12ec178 into wfxr:main Mar 17, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add git checkout any file from any commit

2 participants