功能 | 命令 | 解释 |
---|---|---|
设置 | git config --global user.name "Your Name" | 自报家门:你的名字 |
git config --global user.name "Your Email" | 自报家门:你的邮箱 | |
初始化 git 仓库 |
git init | 将当前目录变成Git可以管理的仓库 |
添加文件到 git 仓库 | git add file1.txt | 将 file1.txt 提交到暂存区 |
git add file2.txt file3.txt | 将 file2.txt 以及 file3.txt 同时提交到暂存区 | |
git commit -m "add 3 files" | 将暂存区的文件提交到仓库内,-m 后跟的是提交的信息, 建议写的明显易懂,最好是跟文件修改内容相关 |
|
查看仓库状态 | git status |
查看仓库当前的状态: Changes not staged for commit ## 发生了改变但是没有提交到仓库内(还没有执行 git add) Changes to be committed ## 将要提交修改(已经执行了 git add) nothing to commit,working tree clean ## 已执行 git commit ,当前没有需要提交的修改 Untracked files ## 新添加了文件,但还未 add |
git diff | 查看 difference,查看本地的文件与 master 版本的差异 | |
显示提交日志 | git log | 显示从最近到最远的提交日志 |
git log --pretty=oneline | 显示从最近到最远的提交日志的简化信息 | |
git reflog | 记录每一次 commit 和 reset 命令 | |
版本控制 | git reset --hard HEAD^ | 将当前版本回退至上一版本 |
git reset --hard HEAD~n | 将当前版本回退至第 n 个版本 | |
git reset --hard commit_id | 将当前版本指向 commit_id 版本号的版本 | |
撤销修改 | git checkout -- file1.txt | 将 file1.txt 文件丢弃工作区的修改(file1.txt 还没放进暂存区) |
git reset --hard HEAD && git checkout -- file1.txt | 将 file1.txt 文件丢弃工作区的修改(file1.txt 已经放进暂存区) | |
删除文件 | git rm test.txt && git commit -m 'delete test' | 将版本库内的 test.txt 删除(其实也是一次修改) |
git checkout -- test.txt | 本地的 test.txt 误删除了,但是版本库内还没有删除,用这个可还原 | |
创建SSH Key | ssh-keygen -t rsa -C "youremil.com" | 生成密钥对,将 id_rsa.pub 文件内的内容粘贴到 github 的 SSH key 内,添加了才能往 github 推送 |
添加远程库 | git remote add origin git@github.com:ganziwen/learngit.git | 本地关联远程仓库,添加后,远程库的名字就是 origin
|
git push -u origin master | 把本地库的所有内容推送到远程库(github)上,执行一次之后,以后就不用 -u 参数了 | |
git push origin master | 本地作了提交,使用该命令将本地的 master 分支的最新修改推送至 github | |
从远程库克隆 | git clone git@github.com:ganziwen/helloworld.git | 将 github 仓库的 helloworld 克隆到本地 |
创建分支 | git branch dev | 创建一 dev 新分支 |
切换分支 | git checkout dev | 切换到 dev 分支 |
创建&切换分支 | git checkout -b dev | 创建一个 dev 分支,并且切换到 dev 分支 |
查看分支 | git branch | 查看当前所有分支,所指向的分支用 * 标注 |
合并分支 | git merge dev | 将 dev 分支合并到当前分支。Fast-forward 代表快进模式合并 |
删除分支 | git branch -d dev | 将 dev 分支删除(合并完了不用就可以删除) |
查看分支合并图 | git log --graph | 查看 merge 的合并图 |
git log --graph --pretty=oneline --abbrev-commit | 简化分支图信息,过滤不必要的信息 | |
合并分支 | git merge --no-ff -m 'message' dev | 合并分支时,加上 --no-ff 参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并 |
bug 分支管理 | git stash | 把当前工作现场“储藏”起来,等以后恢复现场后继续工作 |
git stash list | 查看工作现场的保存 | |
git stash pop | 恢复的同时把stash内容也删了 | |
git stash apply && git stash drop | 恢复 && 删除 | |
删除分支 | git branch -D dev | 对于还未 merge 的版本进行删除,用于删除新功能开发,不合并,需要删除的问题 |
查看远程库信息 | git remote | 查看对应的远程库是哪个库 |
推送分支 | git push origin dev | 将本地的 dev 分支 push 到 origin 分支 |
抓取分支 | git branch --set-upstream-to=origin/dev dev | 设置 dev 和 origin/dev 的链接 |
git pull | 将远程的 origin 分支抓取到本地 | |
创建标签 标签和 commit 挂钩 |
git tag v1.0 | 将当前分支打标签,名字为 v1.0,默认标签是打在最新提交的commit上的 |
git tag | 查看所有标签 | |
git tag v0.9 <commit-id> | 对相应的 commit-id 打标签 | |
git show <tagname> | 查看标签信息 | |
git tag -a v0.1 -m "version 0.1 tag" <commit-id> |
创建带有说明的标签,-a 指定标签名,-m 指定说明文字 |
|
操作标签 | git tag -d <tagname> | 删除标签 |
git push origin <tagname> | 推送某个标签到远程 | |
git push origin --tags | 一次性推送全部尚未推送到远程的本地标签 | |
git tag -d <tagname> && git push origin :refs/tags/<tagname> | 已推送至远程的标签删除,需先删除本地的,再删除远程的(删除命令也是 push ) | |
显示提交 | git last |
显示最近一次的提交 |
配置别名 | git config --global alias.st status | 为 git status 设置别名为 git st,其他的类似:ci 表示 commit ,co 表示 checkout,br 表示 branch |
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" | 用颜色可以看出变化,简洁明了 | |
配置文件 | .git/config | 可以在这里面添加别名,在 alias 内 |