################# git: command line ################# Create a ``~/.gitconfig`` configuration file, see below. ********************* Create new repository ********************* Create a local repo =================== In this example ``HeNO`` is the name of the project:: cd # go to home directory ~ git init HeNO # the name is not part of the repo, can be changed cd HeNO echo "He-NO" > molecule.txt # create some file git add molecule.txt git commit # starts editor; alternative: git commit -m message git branch # verify we are in the ``main`` branch git log2 # if `log1` is defined in .gitconfig Next, we create a remote "bare" repo, and then we come back here. Create a remote bare repo ========================= Setup ``ssh`` public/private keys to have access to the remote server. Here we assume the bare repo is on ``user@lilo.science.ru.nl:repos``:: ssh user@lilo.science.ru.nl:repos # go to where you want to create the bare repo git init --bare HeNO # HeNO, same name as local repo for convenience That's all Push local repo to remote repo ============================== Go back to the directory with the local ``HeNO`` repo:: cd ~/HeNO # the local git repo is in the hidden .git directory git remote add origin user@lilo.science.ru.nl:repos/HeNO git remote -v # check your command # if you need to change it: git remote set-url origin user@lilo.science.ru.nl:repos/HeNO # copy repo to remote location and remember its name: git push --set-upstream origin main # next time you'll just need: git push Use the repo from another computer, e.g. your laptop ==================================================== Make sure ``ssh`` is configured to let you access the remote server without password. Also, create a ``~/.gitconfig`` file, see below. To get the ``HeNO`` repo:: git clone user@lilo.science.ru.nl:repos/HeNO # copy the repo to local device cd ~/HeNO git log2 # have a look Updating the repo ================= After editing some files, we can check what has changed and update the repo:: cd ~/HeNO # assume this is where the local repo is vi molecule.txt # edit a file vi mol.dat # create a new file git status # show new and changed files git diff molecule.txt # see what has changed (using vimdiff if configured below) git add mol.dat git commit git ls-files # list all files in repo Git commit messages =================== The first line is a short summary, it starts with ``feat:`` or one of these:: feat: A new feature fix: A bug fix docs: Documentation only changes style: Changes that do not affect the meaning of the code (white-space, semicolumn etc) refactor: A code change that neither fixes a bug nor adds a feature perf: A code change that improves performance test: Adding missing or correcting existing tests chore: Changes to the build process and libraries such as documentation generation [empty line] [Body of the commit message] Git configuration file ====================== Put this in ``~/.gitconfig``:: [init] defaultBranch = main # instead of master [user] name = Firstname and Lastname email = user@domein.nl [color] ui = auto [pager] status = true [core] pager = more # or "less" [diff] tool = vimdiff # if "vim" is your favorite editor [alias] log1 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all log2 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all [safe] directory = /srv/www/htdocs # I trust this directory for remote repo [filter "indent"] clean = filter.clean smudge = filter.smudge