===== workflow ===== ==== Updating feature branch with the latest development branch ==== tags | bring feature branch up to date with development branch Situation 1: * User 1 raised a merge request to merge feature1 to development branch * Before the merge request is accepted, development branch is updated by User 2 Situation 2: * Say you forked from development branch a while ago to work on a feature and created a branch called "feature1". * After a while, development branch might have progressed and may have new changes added to it. Task: * Bring the feature1 branch up to date with the latest development branch. Solution: Get the latest versions of development and feature branches in the local repository. git checkout development git pull git checkout feature1 git pull Merge development branch into the feature branch and resolve any conflicts that may arise. git merge development Push the changes to the remote. git push Note:- The "git merge development" command works even if you have local changes not committed to feature1. ===== Tasks ===== ==== Initializing git for version control ==== git config --global user.name "Kamaraju S. Kusumanchi" git config --global user.email "kamaraju@gmail.com" git config --global push.default matching git config --global alias.co checkout git init Ref:- https://codemy.com/git ===== dummy ===== ==== git resources ==== * https://learngitbranching.js.org/ - Very good resource to learn git branching. ==== stackoverflow answers I came across ==== * ignore all directories with a specific name - https://stackoverflow.com/questions/1470572/ignoring-any-bin-directory-on-a-git-project ==== show which branch is linked to which remote branch ==== * https://stackoverflow.com/questions/171550/find-out-which-remote-branch-a-local-branch-is-tracking ==== rename a branch that has already been pushed ==== tags | change the remote branch name * https://stackoverflow.com/questions/30590083/how-do-i-rename-both-a-git-local-and-remote-branch-name ==== show contents of a deleted file ==== git show HEAD^:full/path/to/file/from/top/dir/of/the/repository See also: * https://stackoverflow.com/questions/1395445/viewing-a-deleted-file-in-git - I got the answer from here. It also contains a few other alternate solutions. ===== git grep commands ===== ==== dokuwiki table syntax ==== git grep -i --all-match -e '\^.*\^' -e '|.*|' ==== Count number of lines in a file but exclude blank lines ==== git grep -e "^" --and --not -e "^$" | wc -l For example: $ git grep -e "^" --and --not -e "^$" dummy_1510.txt | wc -l 27 ===== Commits related ===== ==== amend last commit ===== export EDITOR=vim git commit --amend --author="Kamaraju S. Kusumanchi " git config user.email "kamaraju@gmail.com" git config --get-all --show-scope user.email git config --get-all --show-origin user.email ===== Configuration related ===== ==== configuration files ==== * https://git-scm.com/docs/git-config#FILES - talks about which files 'git config' reads from. High information density. Easy to understand. ===== git commands usage ===== ==== git cherry-pick ==== git cherry-pick <...> Ref:- * https://stackoverflow.com/questions/9339429/what-does-cherry-picking-a-commit-with-git-mean * https://learngitbranching.js.org/ -> Moving Work Around -> 1: Cherry-pick Intro ===== frequently used ===== ==== newly created repo ==== git config user.name "Kamaraju S. Kusumanchi" git config user.email "kamaraju@gmail.com" ==== pull related ==== for git $\geq$ 2.23.0 git -c advice.detachedHead=false pull --rebase --autostash -v origin for git $\leq$ 2.20.1 git pull --rebase --autostash -v origin used in | https://github.com/KamarajuKusumanchi/rutils/blob/master/bin/git-up