git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Git push subtree fail unknown revision or path possibly due to missing git-subtree-split commit

From
Philippe Blain <levraiphilippeblain@gmail.com>
Date
Oct 7, 2021, 02:52 UTC
Message-ID
<61ee8bec-1e6c-e3c7-2cef-7520f376c18c@gmail.com>
In-Reply-To
<CANcBuaZstymNMvbPX553kgr=FsrFFcDEivfiDPsPe3uyGLb78g@mail.gmail.com>
Hi Eddie,
Le 2021-10-05 à 00:53, Eddie Ridwan a écrit :
Show 6 quoted lines
> Thank you for filling out a Git bug report!
> Please answer the following questions to help us understand your issue.
> 
> What did you do before the bug happened? (Steps to reproduce your issue)
> git pull/push subtree as normal, although it is possible that one of
> the contributors to the subtree repo may have done a force push.
I think that is indeed what happened (see below).
Show 15 quoted lines
> 
> What did you expect to happen? (Expected behavior)
> git push subtree to update the remote subtree repo.
> 
> What happened instead? (Actual behavior)
> Failed to update the remote subtree repo. Error message:
> 
>         fatal: ambiguous argument
> '3f44cc87ceb87df1d9171096596a824fc3050a27^{commit}': unknown revision
> or path not in the working tree.
>      Use '--' to separate paths from revisions, like this:
>      'git <command> [<revision>...] -- [<file>...]'
>      could not rev-parse split hash
> 3f44cc87ceb87df1d9171096596a824fc3050a27 from commit
> 8577911bf6183497cc246aa620e7be1b6becec29

It would be easier to help you if you gave a URL for your repository :) (or at least for the subtree). I managed to find you Stack Overflow post [1] by Googling these commit hashes (!). Fortunately you mention the subtree URL in your question, and that's enough to go by in this case.

Show 11 quoted lines
> 
> What's different between what you expected and what actually happened?
> 
> Failed to update the subtree repo, as expected;
> 
> Anything else you want to add:
> 
> I am not able to find the commit/hash
> 3f44cc87ceb87df1d9171096596a824fc3050a27 in the repo. In gitx, I can
> see that the commit is a git-subtree-split. But it appears to no
> longer exist in the repo.

Here, I'm assuming that by "in the repo" you mean in a clone of the subtree repo, i.e. a clone of https://github.com/OpenSID/tema-natra.

Indeed the commit with hash 3f44cc87ceb87df1d9171096596a824fc3050a27 does not exist in such a clone. But, it still exists on GitHub:

https://github.com/OpenSID/tema-natra/commit/3f44cc87ceb87df1d9171096596a824fc3050a27

GitHub almost never removes commits in practice. This is good news, because it means you can fetch it locally.

> How can I bypass or recover from this apparent missing commit? Any
> help would be greatly appreciated.

The git-subtree script does need the commit locally to work. So, just fetch the commit by its hash. In your project repository (the one which uses tema-natra as a subtree), run:

git fetch https://github.com/OpenSID/tema-natra.git 3f44cc87ceb87df1d9171096596a824fc3050a27

This will download the needed objects. After that, you *should* be able to run your 'git subtree push' command.

Note: I think that the 'premium' branch (mentioned in your Stack Overflow question)
was indeed force-pushed, since 'git log --oneline dadcd0167^..' does not show the two
commits that appear in your image [2] that read "Update statistik_pengunjung.php"
Hope that helps,
Philippe.

[1] https://stackoverflow.com/questions/69431546/git-push-subtree-fail-unknown-revision-or-path-possibly-due-to-missing-git-subtr [2] https://i.stack.imgur.com/1tMln.jpg

Previous: Eddie RidwanNext: Eddie Ridwan
Message 2 of 4 in “Git push subtree fail unknown revision or path possibly due to missing git-subtree-split commit”
  1. Eddie RidwanOct 5, 2021
  2. Philippe BlainOct 7, 2021
  3. Eddie RidwanOct 7, 2021
  4. Philippe BlainOct 8, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.