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
> 8577911bf6183497cc246aa620e7be1b6becec29It 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