Talk is cheap, show me the code.
创建分支
git branch yourlocalbranch
切换分支
git checkoutyourlocalbranch
创建分支并切换到该分支,等效于上面两个命令都执行
git checkout -byourlocalbranch
在本地更改完分支的代码后,add并commit后,需要合并分支到主干的话执行
git checkout master
git merge yourlocalbranch //合并分支到当前分支无需合并至主干,直接将本地分支提交到远程仓库的新分支的话执行
git push origin localbranch:remotebranch //将本地分支yourlocalbranch提交到远程分支remotebranch,如果远程没有改分支则自动创建
查看本地所有分支以及当前所在分支
git branch //当前分支前有 * 号
删除本地分支
git branch -Dyourlocalbranch
删除远程分支
git push origin :remotebranch //不加本地分支时进行提交即删除远程分支
二 ,git放弃修改
如果在修改时发现修改错误,而要放弃本地修改时
一,
未使用 git add 缓存代码时。
可以使用 git checkout -- filepathname (比如: git checkout -- readme.md ,不要忘记中间的 “--” ,不写就成了检出分支了!!)。放弃所以的文件修改可以使用 git checkout . 命令。
此命令用来放弃掉所有还没有加入到缓存区(就是 git add 命令)的修改:内容修改与整个文件删除。但是此命令不会删除掉刚新建的文件。因为刚新建的文件还没已有加入到 git 的管理系统中。所以对于git是未知的。自己手动删除就好了。
二,
已经使用了 git add 缓存了代码。
可以使用 git reset HEAD filepathname (比如: git reset HEAD readme.md)来放弃指定文件的缓存,放弃所以的缓存可以使用 git reset HEAD . 命令。
此命令用来清除 git 对于文件修改的缓存。相当于撤销 git add 命令所在的工作。在使用本命令后,本地的修改并不会消失,而是回到了如(一)所示的状态。继续用(一)中的操作,就可以放弃本地的修改。
三,
已经用 git commit 提交了代码。
可以使用 git reset --hard HEAD^ 来回退到上一次commit的状态。此命令可以用来回退到任意版本:git reset --hard commitid
你可以使用 git log 命令来查看git的提交历史。git log 的输出如下,之一这里可以看到第一行就是 commitid:
commit cf0d692e982d8e372a07aaa6901c395eec73e356 (HEAD -> master)
Author: toyflivver <2440659688@qq.com>
Date: Thu Sep 28 14:07:14 2017 +0800多余的空行
commit 14aa4d7ad4ac6fba59b4b8261d32e478e8cc99ff
Author: toyflivver <2440659688@qq.com>
Date: Thu Sep 28 14:06:44 2017 +0800正常的代码
commit da3a95c84b6a92934ee30b6728e258bcda75f276
Author: toyflivver <2440659688@qq.com>
Date: Thu Sep 28 13:58:12 2017 +0800qbf
commit 267466352079296520320991a75321485224d6c6
Author: toyflivver <2440659688@qq.com>
Date: Thu Sep 28 13:40:09 2017 +0800qbf
- git reset HEAD .(有一个点. )撤销已经add的修改
git branch 和 git checkout经常在一起使用,所以在此将它们合在一起
1.Git branch
一般用于分支的操作,比如创建分支,查看分支等等,
1.1 git branch
不带参数:列出本地已经存在的分支,并且在当前分支的前面用"*"标记
1.2 git branch -r
查看远程版本库分支列表
1.3 git branch -a
查看所有分支列表,包括本地和远程
1.4 git branch dev
创建名为dev的分支,创建分支时需要是最新的环境,创建分支但依然停留在当前分支
1.5 git branch -d dev
删除dev分支,如果在分支中有一些未merge的提交,那么会删除分支失败,此时可以使用 git branch -D dev:强制删除dev分支,
1.6 git branch -vv
可以查看本地分支对应的远程分支
1.7 git branch -m oldName newName
给分支重命名
2. Git checkout
1. 操作文件 2. 操作分支
2.1 操作文件
2.1.1 git checkout filename 放弃单个文件的修改
2.1.2 git checkout . 放弃当前目录下的修改
2.2 操作分支
2.2.1 git checkout master 将分支切换到master
2.2.2 git checkout -b master 如果分支存在则只切换分支,若不存在则创建并切换到master分支,repo start是对git checkout -b这个命令的封装,将所有仓库的分支都切换到master,master是分支名,
2.3 查看帮助
git checkout --help
当然git checkout还有许多命令,但这些已经能满足我们日常开发所需
git cat-file
git log
git config
git grep
git diff
git status
git add
git commit
git reset
git branch
git checkout
git clean
git rm
git mv
git archive
git clone
git push
git pull
已经提交到远程的代码回滚
1.git revert
git revert HEAD 撤销前一次 commit
git revert HEAD^ 撤销前前一次 commit
git revert fa042ce57 撤销指定的版本,撤销也会作为一次提交进行保存。
与reset不同的是:
revert不会舍弃原来的提交记录,而是生成了一次新的提交。
reset是撤回到某个指定的版本,而revert则是将某个指定的版本撤销,也就是撤回到指定版本之前的一个版本上。
用途
标签可以针对某一时间点的版本做标记,常用于版本发布,这恰恰是我所需要的功能,将本地标签推送到Github上即发布了一个Release版本,下载和查看非常方便。
标签分类
git标签分为两种类型:轻量标签和附注标签。轻量标签是指向提交对象的引用,附注标签则是仓库中的一个独立对象,建议使用附注标签,日后还可以查看标签信息。
创建标签
创建轻量标签
$ git tag v0.2.0 -light
解释:创建轻量标签不需要传递参数,直接指定标签名称即可。
创建附注标签
$ git tag -a v0.1.0 -m "release 0.1.0 version"
解释:创建附注标签时,参数-a即annotated的缩写,指定标签类型,后附标签名。参数m指定标签说明,说明信息会保存在标签对象中。
查看标签
列出当前仓库的所有标签
$ git tag
列出符合模式的标签
$ git tag -l 'v0.1.*'
查看标签版本信息
$ git show v0.1.0
切换标签
切换标签与切换分支命令相同
$ git checkout [tagname]
解释:切换标签后处于一个空的分支上,即”You are in ‘detached HEAD’ state.”
删除标签
误打或需要修改标签时,需要先将标签删除,再打新标签
$ git tag -d v0.1.2
解释:参数-d即delete的缩写,意为删除其后指定的标签。
补打标签
给指定的commit打标签
$ git tag -a v0.1.0 49e0cd22f6bd9510fe65084e023d9c4316b446a6
解释:打标签不必要在HEAD之上,也可在之前的版本上打,这需要你知道某个提交对象的校验和,通过git log命令获取。
发布标签
将v0.1.0标签提交到git服务器
$ git push origin v0.1.0
解释:通常的git push不会将标签对象提交到git服务器,我们需要进行显式的操作。
将本地所有标签一次性提交到git服务器
$ git push origin –tags