GIT BASICS
git init | 在指定的⽬录下创建⼀个空的git repo。不 带参数将在当前⽬录下创建⼀个git repo。 |
git clone | 克隆⼀个指定repo到本地。指定的repo可 以是本地⽂件系统或者由HTTP或SSH指 定的远程路径。 |
git config user.name | 针对当前repo配置⽤户名。使⽤--global 参数将配置全局⽤户名。 |
git add | 将指定⽬录的所有修改加⼊到下⼀次 commit中。把替换成将 添加指定⽂件的修改。 |
git commit -m "<message>" | 提交暂存区的修改,使⽤指定的 作为提交信息,⽽不是打开⽂ 本编辑器输⼊提交信息。 |
git status | 显示哪些⽂件已被staged、未被staged以 及未跟踪(untracked)。 |
git log | 以缺省格式显示全部commit历史。更多⾃ 定义参数请参考后续部分。 |
GIT DIFF
git diff | ⽐较⼯作区和暂存区的修改。 |
git diff HEAD | ⽐较⼯作区和上⼀次commit后的修改。 |
git diff --cached | ⽐较暂存区和上⼀次commit后的修改。 |
UNDOING CHANGES
git revert<commite> | 对指定创建⼀个undo的 commit,并应⽤到当前分⽀。 |
git reset<file> | 将<file>从暂存区移除,但保持⼯作区不 变。此操作不会修改⼯作区的任何⽂件。 |
REWRITING GIT HISTORY
git commit -m <message>--amend | 将当前staged修改合并到最近⼀次的 commit中。 |
git rebase<base> | 基于对当前分⽀进⾏rebase。可以是commit、分⽀名称、tag或 相对于HEAD的commit。 |
git reflog | 显示本地repo的所有commit⽇志。 |
GIT BRANCHES
git branch | 显示本地repo的所有分⽀。 |
git switch -c<branch> | 创建并切换到⼀个新的名为的分 ⽀。去掉-c参数将切换到⼀个已有分⽀。 |
git merge<branch> | 将指定<branch>分⽀合并到当前分⽀。 |
REMOTE REPOSITORIES
git remote add<name><url> | 添加⼀个新的远程连接。添加后可使⽤<name>作为指定远程连接的名称。 |
git fetch<remote><branch> | 从指定抓取指定的所 有commit到本地repo。去掉将 抓取远程所有分⽀的修改。 |
git pull<remote> | 从指定抓取所有分⽀的commit 并⽴刻合并到本地repo。 |
git push<remote><branchj> | 将本地指定推送到指定远程 。如果远程没有对应的分⽀,将 ⾃动在远程创建此分⽀。 |
GIT CONFIG
git config --global user .name<name> | 配置当前⽤户名,使⽤ --global参数将针对 当前系统登录⽤户⽣效。 |
git config -- global user .email <email> | 配置当前⽤户Email。 |
git config -- global alias . <alias-name> <git-command> | 配置⼀个git命令的快捷⽅式。例如:配 置”alias.glog log --graph --oneline”使”git glog”相当于”git log --graph --oneline” . |
git config -- system core .editor <editor> | 配置⽂本编辑器,例如vi,在必要时⾃动 打开此⽂本编辑器。 |
git config -- global --edit | 打开当前⽤户的git全局配置并编辑。 |
GIT LOG
git log -<limit> | 限制log的显示数量。例如: ”git log -5”仅 显示最新5条commit。 |
git log --oneline | 每⾏显示⼀条commit。 |
git log --author= "<pattern>" | 按提交者名字搜索并显示commit。 |
git log --grep= "<pattern>" | 按指定内容搜索并显示commit。 |
git log <since> . .<until> | 显示指定范围的commit。范围参数可以是 commit ID 、分⽀名称、 HEAD或任意相对 位置。 |
git log -- <file> | 仅显示包含指定⽂件修改的commit。 |
git log --graph | 使⽤ --graph参数显示图形化的branch信 息。 |
GIT RESET
git reset | 移除所有暂存区的修改,但不会修改⼯作 区。 |
git reset --hard | 移除所有暂存区的修改,并强制删除所有 ⼯作区的修改。 |
git reset <commit> | 将当前分⽀回滚到指定<commit>,清除 暂存区的修改,但保持⼯作区状态不变。 |
git reset --hard <commit> | 将当前分⽀回滚到指定<commit>,清除 暂存区的修改,并强制删除所有⼯作区的 修改。 |
GIT REBASE
git rebase -i <base> | 以交互模式对当前分⽀做rebase。 |
GIT PULL
git pull --rebase <remote> | 抓取所有远程分⽀,并以rebase模式并⼊ 本地repo⽽不是merge。 |
GIT PUSH
git push <remote> --force | 将本地分⽀推送到远程。不要使⽤ --force 参数,除⾮你完全明⽩此操作的后果。 |
git push <remote> --tags | 使⽤push命令并不会⾃动将本地tag推送 到远程。加上--tags参数会将所有本地tag 推送到远程。 |