git tag --sort -creatordate
git tag --sort -taggerdate --sort -committerdate
latestGitTag=$(git tag -l --sort=-version:refname | grep "^[0-9]" | head -n 1)
# https://stackoverflow.com/a/14736749/5095636
# cut -c 4- means, take characters from fourth character
git st -s | cut -c4- | grep -E '.py' | while read f; do echo $f && isort --profile black $f && black $f ; done
# https://stackoverflow.com/a/5326684/5095636
#for changes relative to index
git diff --name-only
#for ... well staged chages :)
git diff --name-only --staged
# got both
git diff --name-only HEAD
git status -s | cut -c4- | grep .py | while read f ; do isort --profile black $f ; black $f; done
# https://www.tecmint.com/install-git-centos-fedora-redhat/
# https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
yum update
yum groupinstall "Development Tools"
yum install gettext-devel openssl-devel perl-CPAN perl-devel zlib-devel
wget https://github.com/git/git/archive/v2.29.2.tar.gz -O git.tar.gz
tar -zxf git.tar.gz
cd git-2.10.1/
make configure
./configure --prefix=/usr/local
make all doc info
sudo make install install-doc install-info
git --version
git clone --bare old_repo
cd old_repo
git push --mirror new_repo
git log -Spassowrd
- all occurrences:
git ll -- file_name
- only added:
there're also A, M, D, etc. https://git-scm.com/docs/git-log#Documentation/git-log.txt---diff-filterACDMRTUXB82308203
git log --diff-filter=A -- file_name
https://superuser.com/a/273199
git checkout -B main origin/main
git config -l
git commit --amend --no-edit --author="Xiang ZHU <[email protected]>"
git pull upstream pull/[prNumber]/head:pr[prNumber]
git checkout pr[prNumber]
git config --global alias.amend 'commit --amend -C HEAD'
git config --global alias.br 'branch'
git config --global alias.st 'status'
git config --global alias.sh 'show'
git config --global alias.df 'diff'
git config --global alias.ci 'commit'
git config --global alias.co 'checkout'
git config --global alias.unstage 'reset HEAD --'
git config --global alias.last 'log -1 HEAD'
git config --global alias.lga 'log --graph --decorate --oneline --all'
git config --global alias.ll "log --graph --all --pretty=format:'%C(auto)%h%Creset %an: %s - %Creset %C(auto)%d%Creset %C(bold black)(%cr)%Creset %C(bold black)(%ci)%Creset'"
git config --global alias.cm 'checkout main'
git config --global alias.rum 'pull --rebase upstream main'
git config --global alias.rom 'pull --rebase upstream main'
git config --global color.ui auto
git config --global core.editor vim
git config --global tag.sort -v:refname
# when switching between windows and linux (wsl), git status might shows all the files are modified
# https://github.com/microsoft/WSL/issues/184
git config --global core.autocrlf true
# git config --global core.filemode false
# git config --global user.name 'Xiang ZHU'
# git config --global user.email '[email protected]'
# git config --global diff.tool 'defautl-difftool'
# git config --global difftool.default-difftoll.cmd 'code --wait --diff $LOCAL $REMOTE'
# git config --global merge.tool 'code --wait'
# git config --global http.sslverify false
# git config --global rebase.useBuiltin true
# git config --global stash.useBuiltin true
# git config --global credential.helper wincred # obsolete
# With Git for Windows 2.7.3+ (March 2016):
# git config --global credential.helper manager
[email protected]
# git config user.email $pernod_email
cd ~/git
all_folders=$(ls -d $PWD/*)
echo $all_folders | tr ' ' '\n' | while read -r folder ; \
do \
echo ====== $folder ; cd $folder ; \
url=$(git remote get-url origin 2>/dev/null) ; \
if [[ -n $url ]] ; then \
if [[ $url =~ "pernod" ]] ; then \
echo ~~~is PR ; git config user.email $pernod_email ; \
fi ; \
fi ; \
url= ; cd ~/git ; \
done