列举所有的别名与配置
gitconfig--list
Git 别名配置
gitconfig--globalalias.gitconfig--globalalias.ststatus
设置git为大小写敏感
git config --global core.ignorecase false
在git 命令行里查看everyday git
git help everyday
显示git常用的帮助命令
git help -g
获取Git Bash的自动补全
~/.git-completion.bash&&echo'[-f~/.git-completion.bash]&&.~/.git-completion.bash'>>~/.bashrc
设置自动更正
gitconfig--globalhelp.autocorrect1
获取所有远端引用配置
gitremote
或者
gitremoteshow
修改某个远端的地址
gitremoteset-urloriginURL
Repo
查看当前仓库中的所有未打包的objects和磁盘占用
gitcount-objects--human-readable
从object数据库中删除所有不可达的object
gitgc--prune=now--aggressive
展示所有被追踪的文件
gitls-files-t
展示所有未被追踪的分支
gitls-files--others
展示所有被忽略的文件
gitls-files--others-i--exclude-standard gitcheck-ignore* gitstatus--ignored
Manipulation:操作
停止追踪某个文件但是不删除它
gitrm--cached<file_path
或者
gitrm--cached-r<directory_path
强制删除未被追踪的文件或者目录
gitclean-f gitclean-f-d gitclean-df
清空.gitignore
gitclean-X-f
Changes:修改
Info:信息查看
查看上次提交之后的未暂存文件
gitdiff
查看准备用于提交的暂存了的修改的文件
gitdiff--cached
显示所有暂存与未暂存的文件
gitdiffHEAD
查看最新的文件版本与Stage中区别
gitdiff--staged
dd:追踪某个修改,准备提交
Stage某个文件的部分修改而不是全部
gitadd-p
Reset:修改重置
以HEAD中的最新的内容覆盖某个本地文件的修改
gitcheckout--<file_name>
Stash:贮存
Info:信息查看
展示所有保存的Stashes
gitstashlist
Manipulation:操作
Save:保存
保存当前追踪的文件修改状态而不提交,并使得工作空间恢复干净
gitstash
或者
gitstashsave
保存所有文件修改,包括未追踪的文件
gitstashsave-u
或者
gitstashsave--include-untracked
应用任何的Stash而不从Stash列表中删除
gitstashapply<stash@{n}>
应用并且删除Stash列表中的最后一个
gitstashpop
或者
gitstashapplystash@{0}&&gitstashdropstash@{0}
删除全部存储的Stashes
gitstashclear
或者
gitstashdrop<stash@{n}>
从某个Stash中应用单个文件
gitcheckout<stash@{n}>--<file_path>
或者
gitcheckoutstash@{0}--<file_path>
Commit:提交
检索某个提交的Hash值
gitrev-list--reverseHEAD|head-1
Info:信息查看
List:Commit列表
查看自Fork Master以来的全部提交
gitlog--no-merges--stat--reversemaster..
展示当前分支中所有尚未合并到Master中的提交
gitcherry-vmaster
或者
gitcherry-vmaster<branch-to-be-merged>
可视化地查看整个Version树
gitlog--pretty=oneline--graph--decorate--all
或者
gitk-all
查看所有在分支1而不在分支2中的提交
gitlogBranch1^Branch2
展示直到某次提交的全部文件列表
gitls-tree--name-only-r<commit-ish>
展示所有在某次提交中修改的文件
gitdiff-tree--no-commit-id--name-only-r<commit-ish>
展示所有对于某个文件的提交修改
gitlog--follow-p--<file_path>
Manipulation:关于提交的操作
Apply:Commit确认或者应用
利用cherry-pick将某个分支的某个提交跨分支的应用到其他分支
gitcheckout<branch-name>&&gitcherry-pick<commit-ish>
提交时候忽略Staging区域
gitcommit-am<commitmessage>
提交时候忽略某个文件
gitupdate-index--assume-unchangedChangelog; gitcommit-a; gitupdate-index--no-assume-unchangedChangelog
撤销某个故意忽略
gitupdate-index--no-assume-unchanged<file_name>
将某个提交标记为对之前某个提交的Fixup
gitcommit--fixup<SHA-1>
Reset:将当前分支的HEAD重置到某个提交时候的状态
重置HEAD到第一次提交
gitupdate-ref-dHEAD
丢弃自某个Commit之后的提交,建议只在私有分支上进行操作。注意,和上一个操作一样,重置不会修改当前的文件状态,Git会自动将当前文件与该Commit时候的改变作为Changes列举出来
gitreset<commit-ish>
Undo&Revert:撤销与恢复某个Commit
以创建一个新提交的方式撤销某个提交的操作
gitrevert<commit-ish>
恢复某个文件到某个Commit时候的状态
gitcheckout<commit-ish>--<file_path>
Update:修改某个Commit
修改上一个提交的信息
gitcommit-v--amend
修改提交的作者信息
gitcommit--amend--author='AuthorName<email@address.com>'
在全局的配置改变了之后,修改某个作者信息
gitcommit--amend--reset-author--no-edit
修改前一个Commit的提交内容但是不修改提交信息
gitadd--all&&gitcommit--amend--no-edit
Branch:分支
Info:信息查看
获取当前分支名
gitrev-parse--abbrev-refHEAD
Tag
列举当前分支上最常用的标签
gitdescribe--tags--abbrev=0
List:分支枚举
获取所有本地与远程的分支
gitbranch-a
只展示远程分支
gitbranch-r
根据某个Commit的Hash来查找所有关联分支
gitbranch-a--contains<commit-ish> 或者 gitbranch--contains<commit-ish>
Changes:某个分支上的修改情况查看
查看两周以来的所有修改
gitlog--no-merges--raw--since='2weeksago' 或者 gitwhatchanged--since='2weeksago'
Merger:合并情况查看
追踪某个分支的上游分支
gitbranch-uorigin/mybranch
列举出所有的分支以及它们的上游和最后一次提交
gitbranch-vv
列举出所有已经合并进入Master的分支
gitbranch--mergedmaster
Manipulation:操作
Checkout:检出与分支切换
快速切换到上一个分支
gitcheckout-
不带历史记录的检出某个分支
gitcheckout--orphan<branch_name>
Remove:分支移除
删除本地分支
gitbranch-d<local_branchname>
删除远程分支
gitpushorigin--delete<remote_branchname> 或者 gitpushorigin:<remote_branchname>
移除所有已经合并进入Master的分支
gitbranch--mergedmaster|grep-v'^/*'|xargs-n1gitbranch-d
移除所有在远端已经被删除的远程分支
gitfetch-p 或者 gitremotepruneorigin
Update:信息更新
修改当前分支名
gitbranch-m<new-branch-name> 或者 gitbranch-m[<old-branch-name>]<new-branch-name>
rchive:打包
将Master分支打包
gitarchivemaster--format=zip--output=master.zip
将历史记录包括分支内容打包到一个文件中
gitbundlecreate<file><branch-name>
从某个Bundle中导入
gitclonerepo.bundle<repo-dir>-b<branch-name>
Merge:合并
Pull&Push:远程分支合并操作
用pull覆盖本地内容
gitfetch--all&&gitreset--hardorigin/master
根据Pull的ID拉取某个Pull请求到本地分支
gitfetchoriginpull/<id>/head:<branch-name>
或者
gitpulloriginpull/<id>/head:<branch-name>
Rebase:变基
在Pull时候强制用变基进行操作
gitconfig--globalbranch.autosetuprebasealways
将某个feature分支变基到master,然后合并进master
gitcheckoutfeature&&gitrebase@{-1}&&gitcheckout@{-2}&&gitmerge@{-1}
变基之前自动Stash所有改变
gitrebase--autostash
利用变基自动将fixup提交与正常提交合并
gitrebase-i--autosquash
利用ReBase将前两个提交合并
gitrebase--interactiveHEAD~2
Diff&Conflict:差异与冲突
Info:信息查看
列举全部的冲突文件
gitdiff--name-only--diff-filter=U
在编辑器中打开所有冲突文件
gitdiff--name-only|uniq|xargs$EDITOR
Workflow:工作流
SubModules:子模块
Info:信息查看
Manipulation:操作
利用SubTree方式将某个Project添加到Repo中
gitsubtreeadd--prefix=<directory_name>/<project_name>--squashgit@github.com:<username>/<project_name>.gitmaster
更新所有的子模块
gitsubmoduleforeachgitpull
Work Tree
Manipulation:操作
从某个仓库中创建一个新的Working Tree
gitworktreeadd-b<branch-name><path><start-point>
从HEAD状态中创建一个新的Working Tree
gitworktreeadd--detach<path>HEAD
