Git command补漏
Table of Contents


git xxx --bare

# git init empty repo only with .git element
git init --bare

# git clone repo with all the git related revision history
git clone --bare wiki wiki.git

# previous step git clone with bare equals the below command
cp -Rf wiki/.git wiki.git

git remote xxx

# git remote add new repo address with specific port
git remote add origin ssh://

git diff xxx

#  git diff [<options>] [<commit> [<commit>]] [--] [<path>...]

# various ways to check working tree
git diff
git diff --cached
git diff HEAD

# comparing with arbitrary commits
git diff test
git diff HEAD -- ./test

# comparing branches
git diff xxbranch master
git diff xxbranch..master
git diff xxbranch...master

git tag xxx

# create tag
git tag -a v1.0 -m "tag message detail"

# show someone tag
git show v1.0

# push local tags to origin branch
# just one tag
git push origin v1.0
# all the local tags
git push origin --tags

git merge xxx

#  git merge [<options>] [<commit>...]
#  or: git merge [<options>] <msg> HEAD <commit>

git merge hotfix
git merge fixes enhancements
git merge --no-commit tempbranch

# if has conflict, use mergetool command
git mergetool
git log --merge -p<path>
git show :1:filename

git reset xxx

#  git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit>]
#  or: git reset [-q] <tree-ish> [--] <paths>...
#  or: git reset --patch [<tree-ish>] [--] [<paths>...]

# reset work tree to the last commit
git reset --bard HEAD

# just reset specific files
git chechout -- <specific.flie>

# How to fix the issue when after you commit
# The better way is create new commit to cover issue use revert
git revert HEAD

# if reset next-to-last commit
git revert HEAD^ 

git commit xxx

# -a parameter contains git add and git commit
git commit -a

# -v parameter will display all the diff messages
git commit -v

# --amend will use the latest commit instead before commit
git commit --amend -m "the latest commit with forgot files"