Sure, I know a lot of projects have been on GH since before MS bought it, but they’ve owned it for quite a while now, so we really should be seeing better migration out by now, no?
Codeberg is nonprofit which seems more in the spirit of the Linux ecosystem overall. GH is for-profit…


That’s some really helpful advice, thank you! 😃 I actually didn’t know you could just make any local folder a repo like that.
Would a Forgejo instance still be helpful if I wanted to have “one point of truth” between multiple machines even if I’m the only dev? I already use Syncthing, but for some reason I feel like there’d be a lot of sync conflicts and stuff.
The other main reason for wanting to learn Git, of course, is because it’s otherwise more difficult to try out changes to scripts and experiment, without finding yourself lost in the weeds and forgetting what worked last.
My current “version control” is “copy the entire project folder before you do anything major.” 😂
If you just want one point of truth, the minimal version is to create a bare repo somewhere that you have ssh access to or your local machine. Then you can clone/pull/push from it.
A bare repo is a special kind of repo meant for exactly this, but can be a bit confusing at first. A normal repo contains all of your current working files and a special
.gitdirectory that holds all the files/blobs/history that git needs to work. A bare repo is just the.gitas a top directory withbare=truein its config. So you can use it as a remote, but it never has a working set. They are usually named something likemy_repo.git.Edit:
Here’s a basic example for setting it all up in a fully local way:
mkdir ~/bares git init --bare ~/bares/my_repo.git mkdir ~/code git clone ~/bares/my_repo.git ~/code/my_repoAnd then you have remotes as your main source of truth in
~/baresand your working copies in~/code. If you want to access from another machine that has ssh access to the first, you can do:mkdir ~/code git clone user@host:~/bares/my_repo.git ~/code/my_repoAnd then use git pull/push to keep it all in sync. Don’t use Syncthing on a git repo, it eventually goes badly.