====== GIT ====== ===== credentials and config ===== machine git.csgalileo.org login blabla password blabla [user] name = Stefano Scipioni email = blabla [core] autocrlf = input #safecrlf = true editor = vim [http] sslverify = false [alias] co = checkout ci = commit st = status br = branch hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short type = cat-file -t dump = cat-file -p [push] default = simple [color] ui = auto ===== New repo ===== NAME=project.git mkdir $NAME cd $NAME git init --bare mv hooks/post-update* hooks/post-update chmod +x hooks/post-update git update-server-info ===== change origin ===== git remote -v git remote set-url origin http://git.csgalileo.org/livenet-server.git check origin git remote show origin if prune needed (on server restart apache if dav is used) git remote prune origin git push --set-upstream origin master ===== create branch with current changes ===== git checkout -b newBranch ===== tag ===== git tag -a v1.1 -m "versione 1.1" git push origin v1.1 ===== new remote branch ===== [[https://github.com/Kunena/Kunena-Forum/wiki/Create-a-new-branch-with-git-and-manage-branches|reference]] create locally git branch [name_of_your_new_branch] git checkout [name_of_your_new_branch] create or update remotly git push --set-upstream origin [name_of_branch] view remote branches git fetch -v fetch remote branches git checkout -b [branch] origin/[branch] ===== delete remote branch ===== git push origin --delete [branch] # and locally git branch -d [branch] ===== rename branch (local and remote) ===== git branch -m new-name # Delete the old-name remote branch and push the new-name local branch. git push origin :old-name new-name # Reset the upstream branch for the new-name local branch. git push origin -u new-name ===== Preserve specific files while merging ===== start by defining a merge driver that would always favor our current version of the file git config --global merge.ours.driver true into repo mark examplefile.json to use that driver instead of the standard one: echo 'examplefile.json merge=ours' >> .gitattributes ===== integrate changes from one branch into another branch ===== ==== merging ==== from feature branch to master git checkout feature git merge master ==== or rebasing ==== git checkout feature git rebase -i master # if remote feature is present force push on origin git push --force origin feature ==== rebase remote branch (or original fork) with local branch ==== add forked repo if none (git remote -v) git remote add upstream https://github.com/pjreddie/darknet.git rebase remote on master git fetch upstream git checkout master git merge upstream/master git push ==== merge specific commit from branch to another ==== git co git cherry-pick ===== Home Assistant ===== git clone https://github.com/scipioni/home-assistant.git cd home-assistant git remote add upstream https://github.com/home-assistant/home-assistant.git git pull upstream dev ===== apache git ===== apt install apache2 a2enmod dav_lock dav dav_fs macro systemctl restart apache2 ===== submodule ===== cd git checkout master git branch -u origin/master master cd git config -f .gitmodules submodule..branch master