===== 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