本文发布于Cylon的收藏册,转载请著名原文链接~

Tag

command describe
git tag 列出所有tag
git tag -l v1.* 列出符合条件的tag(筛选作用)
git tag [tag_name] 创建轻量tag(无-m标注信息)
git push REMOTE TAG 推送一个tag到远端
git push origin –tags* 推送所有本地tag到远程
git push origin :refs/tags/[REMOTE TAG]
git push –delete REMOTE TAG
删除远程指定tag
git fetch origin [remote_tag_name] 拉取远程指定tag
git show [tag_name] 显示指定tag详细信息
git push origin [local_tag_name] 推送指定本地tag到远程
git tag NEW_TAG OLD_TAG
git tag -d OLD_TAG
重命名本地tag
git tag -d [local_tag_name] 删除本地指定tag
git ls-remote –tags origin 查询远程tags
git tag -a [tag_name] 创建含注解的tag
git fetch origin [remote_tag_name]
git checkout [remote_tag_name]
git branch
checkout远端tag到本地

Checking

检查工作目录与暂存区的状态

command describe
git status 查看在你上次提交之后是否有对文件进行再次修改
git status -s 获得简短的输出结果
git diff 用于比较文件间差异
git diff –cached
git diff –staged
显示暂存区(已add但未commit文件)和最后一次commit(HEAD)之间的所有不相同文件的增删改
git diff HEAD 工作目录(已track但未add文件)和暂存区(已add但未commit文件)与最后一次commit之间的的所有不相同文件的增删改
git diff <branch1> <branch2>                           比较两个分支上最后 commit 的内容的差别

Log

command describe
git diff branch1 branch2 –stat  显示出所有有差异的文件(无内容)
git log <b1>..<b2> 查看 b1 中的 log 比 b2 中的 log 多提交了哪些内容
git log –oneline 以 <commit_id> <comment> 为一行来显示
git log -S <‘LoginViewController’> log 的输出将添加火删除对应字符串
git log –all –grep=<‘0117’> log 的输出将过滤出与对应字符串相关的commit

Checkout

checkout 是指不同tag或分支间的切换行为

command describe
git checkout TAG 切换至一个tag
git checkout -b BRANCH TAG 创建一个新分支,并切换至这个tag
git checkout BRANCH 切换至一个分支
git checkout -m BRANCH 在切换分支时如有冲突则合并
git checkout COMMIT_HASH 切换至一个commit
git checkout -b BRANCH HEAD~4
git checkout -b BRANCH COMMIT_HASH
切换并创建为新分支
git checkout COMMIT – FILE_PATH           将 FILE_PATH 指定的文件恢复为当前分支的最新版本(仅未add)

Remote

remote 子命令用于管理repositories

command describe
git remote List all remote
git remote rename OLD_REMOTE NEW_REMOTE Rename remote
git remote prune REMOTE Remove stale remote tracking branches

Branch

branch 用于管理分支

command describe
git branch List all branches
git checkout -b BRANCH Create the branch on your local machine and switch in this branch
git branch BRANCH COMMIT_HASH     Create branch from commit
git push REMOTE BRANCH Push the branch to remote
git branch -m OLD_BRANCH NEW_BRANCH       Rename other branch
git branch -m NEW_BRANCH Rename current branch
# Rename branch locally
git branch -m OLD_BRANCH NEW_BRANCH

# Delete the old branch
git push origin :OLD_BRANCH

# Push the new branch, set local branch to track the new remote
git push –set-upstream REMOTE NEW_BRANCH
Rename remote branch
git branch -D BRANCH
git push REMOTE :BRANCH
Delete a branch locally and remote
git branch | grep -v “master” | xargs git branch -D Delete all local branches but master

Commit

Record changes to the repository

command describe
git reset –hard HEAD~1 Undo last commit
git rebase -i HEAD~5
git reset –soft HEAD~5
git add .
git commit -m “Update”
git push -f origin master
Squash last n commits into one commit
git branch newbranch

# Go back 3 commits. You will lose uncommitted work.1
git reset –hard HEAD~3

git checkout newbranch
Move last commits into new branch:
git rebase -i HEAD^^^
git add .
git rebase –continue
Make changes to older commit

Merge

Join two or more development histories together

command describe
git checkout BRANCH
git merge –no-ff BASE_BRANCH
Merge commits from master into feature branch
git merge BRANCH Current branch merge to BRANCH branch
git merge -m “Merge from Dev” When merge branch add comment
git merge -s ours obsolete Merge obsolete branch to current branch using ours policy
git merge –no-commit maint Merge maint branch to current, than do not make new comment

Cherry Pick

Apply the changes introduced by some existing commits

1
git cherry-pick COMMIT_HASH_A COMMIT_HASH_B

Revert

command describe
git revert HEAD Revert the previous commit
git revert –no-commit HEAD~3.. Revert the changes from previous 3 commits without making commit

Amend

command describe
git commit –amend Amend previous commit
git commit –amend –no-edit
git commit –amend -m “COMMIT_MESSAGE” Changing git commit message
git commit –amend -m “COMMIT_MESSAGE”
git push –force REMOTE BRANCH
Changing git commit message after push

Reflog

reference log

command describe
git reflog Show reflog
Get commit

Rebase

Rebase the current branch onto another branch

command describe
git rebase BASE_BRANCH Rebase the current branch onto another branch
git rebase –continue Continue rebase
git rebase –abort Abort rebase

Tracking

command describe
git clean Remove untracked files
git reset FILE_PATH Remove file from index
git reset Reset the index to match the most recent commit
git reset –hard Reset the index and the working directory to match the most recent commit
git rm file Remove files from the working tree and from the index
git ls-files Show information about files in the index and the working tree
git ls-files -d Show deleted files in the output.
git ls-files -m Show modified files in the output.
git ls-files -i Show only ignored files in the output.
git ls-files –no-empty-directory Do not list empty directories. Has no effect without –directory.

Config

command describe
git config -l list all git config
git config –global [key] “[value]” set global configuation
git config [key] “[value]” set current repositories configuation

Reference

awesome-git-commands

本文发布于Cylon的收藏册,转载请著名原文链接~

链接:awesome git command

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」 许可协议进行许可。