之前学过git,由于公司用的主要是SVN,有段时间没摸过git,记忆模糊了许多,因此现在记录下来,以备后面查询。
| Command | Description |
|---|---|
git init |
在当前目录下创建版本库,会创建.git目录 |
git add <file_1... file_n> |
添加文件到暂存区 |
git add * |
添加当前目录所有变更的文件到暂存区 |
git commit -m <message> |
将暂存区的所有内容提交到当前版本 |
git status |
查看当前仓库状态/查看merge冲突的文件 |
git diff <file> |
查看文件的变更 |
git log |
查看git提交到历史记录 |
git log --pretty=oneline |
好看的形式打印提交记录 |
git reflog |
记录每一次操作的命令, 可用于寻找git reset命令丢失的commit_id |
git rm |
删除文件 |
git remote -v |
查看远程仓库详情 |
git tag |
查看当前tag列表 |
git tag <tagname > -m <message> |
为当前HEAD打上tag, message表示说明文字,可忽略 |
git tag <tagname > <commit_id> -m <message> |
为该commit_id打上tag,message表示说明文字,可忽略 |
git show <tagname> |
查看该标签详情 |
git tag -d <tagname> |
删除某标签 |
git push origin <tagname> |
推送某标签 |
git push origin --tags |
推送本地所有标签 |
git blame <filename> |
查看文件的每一行是由谁写的 |
git diff
查看差异
| Command | Description |
|---|---|
git diff |
比较工作区和暂存区 (如果还没提交,则是与HEAD)的差异 |
git diff --cache |
比较暂存区与HEAD的差异 |
git diff HEAD |
比较工作区与HEAD的差异 |
git diff v1 v2 |
比较版本号v1与v2的差异 |
git diff v1 v2 <file/dir> |
比较版本号v1和v2 指定文件/目录 的差异 |
git reset
回退版本
| Command | Description |
|---|---|
git reset --hard HEAD |
丢弃所有更改,包括暂存区, 回退工作区到最新提交版本(源码的修改不保留) |
git reset --hard HEAD^ |
回退到上一个提交版本(之后的提交将不存在) |
git reset --hard HEAD^^ |
回退到上上一个提交版本(之后的提交将不存在) |
git reset --hard HEAD~0 |
回退到最新提交版本 |
git reset --hard HEAD~100 |
倒数第101次提交版本 |
git reset --hard commit_id |
回退到指定id版本 |
git reset HEAD <file> |
回退暂存区文件到工作区 (取消add,源码的修改保留) |
git checkout
撤销修改
| Command | Description |
|---|---|
git checkout -- file (file already added) |
回退工作区文件到暂存区的状态 |
git checkout -- file (file not add) |
回退工作区文件到版本库最新状态 |
分支
| Command | Description |
|---|---|
git checkout -b <branch_name> |
创建并切换到分支<brach_name> |
git branch |
查看当前分支 |
git checkout <brach_name> |
切换分支 |
git branch -d <branch_name> |
删除分支 <branch_name> |
git merge <branch_Name> |
合并分支<branch_name>到当前分支 |
git log --graph |
查看分支合并图 |
git log --graph --pretty=oneline |
同上 |
git merge --no-ff -m <message> <branch_name> |
以非Fast forward的方式合并分支 |
git merge –squash <branch_name> |
分支的历史记录不提交,用于合并进主干只需显示一次commit的场景 |
git branch -D <branch_name> |
强行删除<branch_name> |
git checkout -b <branch_name> origin/<branch_name> |
同步远程分支到本地 |
stash
| Command | Description |
|---|---|
git stash |
保留现场 |
git stash list |
查看现场列表 |
git stash apply |
恢复现场 |
git stash drop |
删除现场 |
git stash pop |
恢复并删除现场 |
git stash apply stash@{n} |
恢复指定stash |