Git
- Linux distributed version control.
- Notes on using and setting up on Ubuntu.
How to setup GIT private server
- Log into server, create git account, set it to use git-shell (no login), add .ssh/authorized keys for access with no password.
Create repo with $ git init --bare repository
1. On client edit
- --bare can't be used
- Setup .ssh/config, see example if using port, and can even use specific port.
Host githost HostName git.host.de Port 4019 User git
On client pc clone with $ git clone githost:repository
- #(edit some files
git commit -a # Commit all changes to the local version of the repository
git push origin master # Push changes to the server's version of the repository
Nice Git prompt in Linux bash
Git submodule
- Home dir add code as seperate submodule git
on server # sudo -u git git init --bare NewRepo
on pc code$ git submodule add git@git.server:NewRepo
Submodule, with github.com https token
In github.com, under usersettings -> developer -> generate token to be uses in place of pwd.
then with token=<thetoken>
git submodule add https://my2022token:<thetoken>@https://github.com/<user>/<gitrepo>.git
Cleanup local branches already merged into Master
Check what has not been merged with git branch --no-merged
Delete branch git branch -d xxx
. All in one git branch --merged master | grep -v "\* master" | xargs -n 1 git branch -d
Manage homedir on new server from existing git repo
Setup repo, with no-checkout
git clone --depth 2 --no-checkout repo-to-clone gittemp mv gittemp/.git ~ rmdir gittemp
- Create a branch to keep current files local
git branch original_201802 git checkout original_201802 git add . git commit
switch back to main branch
git checkout dev
Merge original file back into dev if required.
git merge original-201802
Working with github and upstream git repos
View with $ git remote show
$ git remote show origin upstream
normally origin should point to your repo, clone possibly of upstream project e.g.
$ git remote show upstream * remote upstream Fetch URL: git@github.com:boltgolt/howdy.git Push URL: git@github.com:boltgolt/howdy.git
To sync latest upstream changes, merge into local master and possibly push back up to your origin e.g.
git pull upstream git merge upstream/master ##Commit message git push
Create branch based on upstream but pushed to my forked origin
- working on github, want to create branch in my forked origin, but based of upstream/master for a fix i want to push/merge to upstream.
$ git remote origin upstream $ git fetch --all --tag Fetching origin Fetching upstream $ checkout -b fix#733-myBranch $ git reset --hard upstream/master $ git push --set-upstream origin fix#733-myBranch
...