提交流程
//创建新文件夹
$ mkdir <文件夹名>
//进入文件夹
$ cd <文件夹名>
//然后执行 git init 以创建新的 git 仓库。
$ git init
//检出仓库
$ git clone 文件路径
//添加文件到暂存区
$ git add <filename> 或 git add .
//将暂存区的所有内容提交更新到当前分支,并注释信息"代码提交注释"
$ git commit -m "代码提交注释"
//注释可以通过单引号来换行
$git commit -m '
> 1.提交内容
> 2.注释文本
> '
//上面的两步可以合在一起写
$ git commit -am "代码提交注释"
$ git commit -a -m "代码提交注释"
//连接远程github项目(关联一个远程库)
$ git remote add origin git@github.com:ZyjEugene/Bears.git
//将本地项目更新到github项目上去(第一次推送master分支的所有内容,使用 `-u` 参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来。此后,每次本地提交后,只要有必要,就可以使用命令$git push origin master推送最新修改
$ git push -u origin master
//推送最新修改
$ git push origin master
//查看远程仓库地址
$ git remote -v
// 强制回退远程仓库到当前版本(在此操作前一定要保证本地版本`git reset --hard <版本号>`到了指定回退的目标版本)
$ git push -f
分支
//查看当前分支
$ git branch
issue1
* master //前面有*的就是现在的分支。
//查看远程分支
$ git branch -r
//查看所有分支(本地+远程)
$ git branch -a
//创建分支
$ git branch <branchname>
//切换分支
$ git checkout <branchname>
//创建和切换分支快捷命令。此命令是上面的两个命令的合体
$ git checkout -b <branchname>
//修改分支的名称
$ git branch -m <oldbranch> <newbranch>
//切换回主分支
$ git checkout master
//删掉指定的分支
$ git branch -d <branch name>
//强行删除指定分支
$ git branch -D <branch name>
//查看分支之间的差异。在合并改动之前,你可以使用如下命令预览差异
$ git diff <source_branch> <target_branch>
//合并指定分支到当前分支。合并分支时,Git会默认用Fast forward模式,此模式下,删除分支后,会丢掉分支信息;而且当所有分支都有改动时,容易出错,建议添加 --no-ff 参数,禁用Fast forward模式
$ git merge <name>
//合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。合并时要创建一个新的commit,所以加上-m参数,把commit描述写进去。
$ git merge --no-ff -m "merge with --no-ff" <name>
//除非你将分支推送到远端仓库,不然他人就看不到该分支
$ git push origin <branch>
日志
//查看仓库状态
$ git status
//查看HEAD的移动历史
$ git reflog
//查看所有版本库日志
$ git log
//log输出信息压缩命令
$ git log --pretty=oneline
//查看指定版本库日志
$ git log <filename>
//查看分支合并图
$ git log --graph
$ git log --graph --pretty=oneline --abbrev-commit
//查看log参数的更多信息
$ git log --help
版本回退
//回到当前版本,放弃所有没有提交的修改
$ git reset --hard HEAD
//回到上个版本
$ git reset --hard HEAD^
//回到上上个版本
$ git reset --hard HEAD^^
//回到往上的第6个版本
$ git reset --hard HEAD~6
//回到指定版本号的版本(3628164这段数字是commit id,也就是所谓的版本号,它是一大串字符串的前几位,我们没必要把一整串commit id都写出来)
$ git reset --hard 3628164
标签
//查看所有标签
$ git tag
//切换到需要打标签的分支上,使用下面命令就可以打一个新标签(标签是默认打在最新提交的commit上的)
$ git tag <name>
//打标签到指定的commit上
$ git tag <name> <commit id>
//查看标签信息
$ git show <tagname>
//创建带有说明的标签。-a:指定标签名,-m:指定说明文字
$ git tag -a <tagname> -m "tag description" <commit id>
//删除本地标签
$ git tag -d <tagname>
//推送指定标签到远程
$ git push origin <tagname>
//推送全部尚未推送到远程的本地标签
$ git push origin --tags
//删除指定远程标签(在删除远程标签之前,要先从本地删除)
$ git push origin :refs/tags/<tagname>
保存工作现场
//`存储`当前工作现场,等以后恢复现场后继续工作
$ git stash
//查看`存储`的工作现场
$ git stash list
//恢复`存储`的工作现场,恢复的同时把stash内容也删掉
$ git stash pop
//可以多次`stash`,恢复的时候,先用`git stash list`查看,然后恢复指定的stash
$ git stash apply stash@{0}
最后推荐
Git
阮一峰
廖雪峰
猴子都懂的Git
欢迎指正!