In preparation of making CacheLib public, the CacheLib github repository
has a new branch
main (instead of
master), and all previous commits
have been squashed (merged into one).
If you cloned/forked the CacheLib repository after September 2021, there is no need to run the commands below - your repository is up-to-date.
When trying to update an existing cloned CacheLib repository (e.g. on your local work computer), The following error might appear:
$ git pullfatal: refusing to merge unrelated histories
Use the following instructions to synchronize your local repository with CacheLib's. NOTES about the commands;
- This assumes you have no local changes
- This assumes the "origin" remote is
First, fetch all the remote updates:
$ git fetch --allFetching originremote: Enumerating objects: 174, done.remote: Counting objects: 100% (174/174), done.remote: Compressing objects: 100% (75/75), done.remote: Total 174 (delta 54), reused 174 (delta 54), pack-reused 0Receiving objects: 100% (174/174), 398.69 KiB | 1.28 MiB/s, done.Resolving deltas: 100% (54/54), completed with 5 local objects.From github.com:facebook/CacheLib+ eb0a8b64...45eb4ad3 main -> origin/main (forced update) #### This indicates the branch was squashedd12f6273..3d6e81b8 gh-pages -> origin/gh-pages
Second, checkout the updated remote 'main' branch, and overwrite any
existing local 'main' branches (
$ git checkout -B main -t origin/mainBranch 'main' set up to track remote branch 'main' from 'origin'.Reset branch 'main'
Your branch is up to date with 'origin/main'.
Third, verify you have the updated branch, with only few commits (as of Aug 13, 2021):
$ git log --pretty=oneline45eb4ad36b2b94b223319ee11326c3bb9a560bf5 (HEAD -> main, origin/main) Updating submodulesa0cf7942cae3f83e60fe3bca5b2ffc87fb1572fe Initial commit
If you created a forked repository on Github, it is very likely that
origin git remote points to YOUR forked repository, not to the
In such cases it is customary to locally add a second git-remote
source and name it
upstream, so that
git pull from
your private changes (and similarly,
git push to
you changes to GitHub), and
git pull from
upstream gets the latest
changes from the CacheLib team.
First step, check which remote sources are defined in your local repository:
$ git remote showorigin $ git remote show origin | grep FetchFetch URL: [email protected]:agordon/CacheLib.git
In the above example, there is only one remote source (named
and it points to a personal (agordon's) forked repository.
To add a second remote source, run the following command:
$ git remote add upstream [email protected]:facebook/CacheLib.git$ git remote showoriginupstream
Synchronize all remote sources:
$ git fetch --allFetching originFetching upstreamFrom github.com:facebook/CacheLib* [new branch] gh-pages -> upstream/gh-pages* [new branch] main -> upstream/main
Checkout the updated
main branch from the upstream source, overwriting the
main branch (if it exists):
$ git checkout -B main upstream/mainReset branch 'main'Your branch is up to date with 'upstream/main'.
Now update (
git push --force) your github fork, with the updated "main" branch content:
$ git push --force --set-upstream origin main:mainTotal 0 (delta 0), reused 0 (delta 0)remote:remote: Create a pull request for 'main' on GitHub by visiting:remote: https://github.com/agordon/CacheLib/pull/new/mainremote:To github.com:agordon/CacheLib.git* [new branch] main -> main
You can now delete the old "master" branch from your forked repository.
The following command deletes a remote branch. If it fails with the following error:
$ git push --delete origin masterTo github.com:agordon/CacheLib.git! [remote rejected] master (refusing to delete the current branch: refs/heads/master)error: failed to push some refs to '[email protected]:agordon/CacheLib.git'
This means that on your local github forked repository, you did not yet change the default branch from "master" to "main" (as the CacheLib repository did on August 12, 2021).
Go to the "settings" page of your forked CacheLib github repository
select "branches" (from the left-side menu bar), then change the
"Default Branch" settings from "master" to "main".
Now try the command again:
$ git push --delete myfork masterTo github.com:agordon/CacheLib.git- [deleted] master
You can also delete the local "master" branch, as it is no longer needed:
$ git branch -D masterDeleted branch master (was a19b4c0a).