命令中:<>表示可选填写 []表示选项必须填写 ()表示可以等价替换为()里内容
0.初始化仓库命令
git init 初始化当前目录仓库
git init --bare 当前目录创建一个裸存储库
1.暂存相关命令
git add [file] 提交某文件到暂存区([file]可以是文件名或目录名)
git add -A <path> 提交所有变化到暂存区,省略<path>表示.(即当前目录)
git add . 提交新文件和被修改文件(不包括被删除文件)到暂存区
git add -u <path> 提交被修改和被删除文件(不包括新文件)到暂存区,省略<path>表示.(即当前目录)
git add -i <path> 查看中被所有修改过或已删除文件但没有提交的文件,并通过其revert子命令可以查看<path>中所有未跟踪的文件
2.提交相关命令
git commit -m "message" 将在本地存储库的“add”中所暂存的更改提交,以及添加本次提交的描述message信息
git commit -a “message” 将在本地存储库已跟踪文件中的执行修改或删除操作的文件都提交,以及添加本次提交的描述message信息
git commit -am "message" 代表-a与-m命令作用都生效
git commit -v 显示HEAD已提交和本次将要提交的内容之间的统一差异与发生了哪些更改来帮助用户描述提交。
git commit --amend 进入vim,可以更改上次提交的描述信息进行保存
git commit --amend -m "updated last message" 更改上次提交的描述信息用updated last message替换并保存
3.撤销与回退命令
(1)撤销在工作区的修改的代码
git checkout -- [file] 丢弃某个文件本次修改
git checkout -- . 丢弃本次全部修改
注意:git checkout -- [file] 这里有两种情况:一种是<file>自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;一种是<file>已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。总之,就是让这个文件回到最近一次git commit或git add时的状态。git checkout – . 丢弃全部修改包括:新增的文件会被删除、删除的文件会恢复回来、修改的文件会回去。这几个前提都说的是,回到暂存区之前的样子。对之前保存在暂存区里的代码不会有任何影响,对commit提交到本地分支的代码就更没影响了.
(2)代码git add到缓存区,并未commit提交
git reset HEAD [file] 丢弃某个文件本次暂存
git reset HEAD . 丢弃本次全部暂存
(3)git commit到本地分支
git reset <选项> HEAD-1(HEAD^) 回到上次提交版本
选项:
-mixed (为默认参数,与不写效果一样)不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
--soft 不删除工作空间改动代码,撤销commit,不撤销git add .
--hard 删除工作空间改动代码,撤销commit,撤销git add . (即恢复到了上一次的commit状态)
(4)回退某一个版本
git reset <选项> <版本号> 回到上次某次提交的版本,版本号可以在git log查看
选项:
-mixed (为默认参数,与不写效果一样)不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
--soft 不删除工作空间改动代码,撤销commit,不撤销git add .
--hard 删除工作空间改动代码,撤销commit,撤销git add . (即恢复到了上一次的commit状态)
4.查看命令
git status 查看当前工作区和暂存区文件的状态
git log 可以查看提交历史,以便确定要回退到哪个版本
git log --graph 可以看到分支合并图
git relog 查看命令历史,以便确定要回到未来的哪个版本
git stash list 查看储存的工作现场
git branch 不带任何参数,列出本地已经存在的分支
git branch -a 查看所有分支列表,包括本地和远程
git branch -r 查看远程版本库分支列表
git branch -v查看每一个分支的最后一次提交,可以运行
git branch -vv 可以查看本地分支对应的远程分支
git branch --merged 查看哪些分支已经合并入当前分支
git branch --no-merged 查看尚未合并进来的分支
git diff <filename> 比较工作区与暂存区之间的差异,也就是修改之后还没有暂存起来的变化内容
git diff <branch> <filename> 查看当前分支文件和另一分支的区别.
git diff --cached(--staged) <commit> <filename> 查看已经暂存区和指定commit提交之间的差异
git diff <commit> <filename> 查看工作目录同Git仓库指定 commit 的内容的差异
git diff <commit> <commit> Git仓库任意两次 commit 之间的差别
5.删除命令
git rm [file]删除文件,删除后需要提交git commit -m " remove file"
6.分支操作命令
git branch [branchname] 创建名为branchname的分支,创建分支时需要是最新的环境,创建分支但依然停留在当前分支
git branch -m [oldName] [newName] 给某分支重命名
git branch -d [branchname] 删除branchname分支,如果在分支中有一些未merge的提交,会删除分支失败
git branch -D [branchname] 即使有未merge的提交, 也会强制删除branchname分支
git merge [branchname] 将某个指定分支合并到当前分支有冲突需先解决
git merge --squash [branchname] 将branchname上的所有提交已经合并到当前分支暂存区(再次执行commit命令提交)
git cherry-pick [branchcommit] 拣选另一条分支上的某个提交条目的改动提交到当前分支的暂存区(可以拣选多次,执行commit命令提交,branchcommit是某分支的commit id)
git cherry-pick -n [branchcommit1] [branchcommit2]... 拣选另一条分支上的多个提交条目的改动提交到当前分支的暂存区
git merge --no-ff -m "message" [branchname] 禁用Fast forward合并branchname分支,并添加描述信息
git checkout [branchname](git switch [branchname])切换到分支branchname
git checkout -m [branchname]切换分支检出失败时,会自动尝试合并(可能会冲突)后再切换到分支branchname
git checkout -b [branchname](git switch -c [branchname])创建并切换到分支branchname
7.保存工作现场
git stash 可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作
git stash apply <stashname>恢复到 工作现场stashname(不输 <stashname>是恢复到最新储存的工作现场)
git stash drop删除工作现场 stashname
git stash pop恢复的同时也删除工作现场
git stash branch [branchname]从储藏中创建分支