Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Git 基础

git init <directory>

在指定目录中创建空的git仓库。在没有参数的情况下运行,则将当前目录初始化为git仓库。

git clone <repo>

将位于<repo>的仓库克隆到本地机器上。原始的仓库可以位于本地文件系统上,也可以通过HTTP或SSH位于远程机器上。

git config user.name <name>

定义作者名用于当前仓库中的所有提交。

git add <directory>

为下一次提交,添加在<directory>变更的内容。

git commit -m "<message>"

提交阶段快照,使用<message>作为提交消息。

git status

列出哪些文件处于暂存、未暂存和未跟踪状态。

git log

使用默认格式显示整个提交历史记录。

git diff

对比工作目录(未 git add)和暂存区(git add 之后)的差异。

取消修改

git revert <commit>

创建新的提交,取消<commit>中所做的所有更改,然后将其应用于当前分支。

git reset <file>

从暂存区删除<file>,但保持工作目录不变。这将在不覆盖任何更改文件的情况下取消文件。

git clean -n

显示将从工作目录中删除哪些文件。使用-f标志代替-n标志来执行清理。

Git 重写历史

git commit --amend

修改最新的一次git commit提交事件 , 并且工作目录有可提交的变更时, 使用git commit --amend命令修改后, 工作目录的最新变更也将一起被提交了

git rebase <base>

将当前分支重设为<base>。<base>可以是提交ID、分支名称、标签或HEAD。

git reflog

可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)。

Git 分支

git branch

列出所有的分支。添加一个<branch>参数来创建一个名为<branch>的新分支。

git checkout -b <branch>

创建并检出一个名为<branch>的新分支。去掉 -b 以签出现有的分支。

git merge <branch>

将<branch>分支合并到当前分支中。

远端仓库

git remote add <name> <url>

添加一个新的远程仓库。添加远程之后,可以在其他命令中使用<name>作为<url>的快捷方式。

git fetch <remote> <branch>

从repo获取指定<分支>的全部更新内容,但不会与本地分支合并。

git pull <remote>

获取当前分支的指定远程副本,并立即将其合并到本地副本中。

git push <remote> <branch>

将分支推到<remote>,以及必要的提交和对象。如果远程repo不存在,则在远程repo中创建命名分支。

git config

git config --global user.name <name>

定义作者名,以供当前用户的所有提交使用。

git config --global user.email <email>

定义作者电子邮件用于当前用户的所有提交。

git config --global alias. <alias-name> <git-command>

为Git命令创建一个快捷方式(别名)。

git config --system core.editor <editor>

为计算机上的所有用户设置命令使用的文本编辑器。

git config --global --edit

在文本编辑器中打开全局配置文件以进行手动编辑。

git log

git log -<limit>

显示 <limit>条提交历史记录。

git log --oneline

显示提交历史记录,并将每个提交压缩到一行。

git log -p

显示提交历史记录,并显示每个提交的完整差异。

git log --stat

显示提交历史记录,包括哪些文件被修改,以及从每个文件中添加或删除的相对行数。

git log --author= ”<pattern>”

搜索指定作者的提交。

git log --grep=”<pattern>”

使用正则匹配搜索提交历史记录。

git log <since>..<until>

显示发生在<since>和<until>之间的提交。

git log -- <file>

仅显示包含指定文件的提交记录。

git diff

git diff HEAD

对比工作目录(未 git add)和版本库(git commit 之后)的文件差异。

git diff --cached

对比暂存区(git add 之后)和版本库(git commit 之后)的文件差异。

git reset

git reset

重置暂存区以匹配最近的提交,但保持工作目录不变。

git reset --hard

重置暂存区和工作目录为最近的提交,并覆盖工作目录中的所有更改。

git reset <commit>

将当前分支提示向后移动到<commit>,将暂存区重置,但不改变工作目录。

git reset --hard <commit>

与前面相同,但将暂存区和工作目录重置。删除未提交的更改,以及<commit>之后的所有提交。

git pull

git pull --rebase <remote>

获取当前分支的远程副本并将其重置为本地副本。使用git rebase而不是merge来集成分支。

git push

git push <remote> --force

强制推送。

git push <remote> --all

将所有本地分支推到指定的远程。

git push <remote> --tags

将所有本地标签推送到远程仓库。