git容易忘记的命令

2,197 阅读2分钟

tag相关

从tag拉分支

git branch <new-branch-name> <tag-name>

从tag拉代码

git pull --branch tagname

打tag

git tag -a tagname -m "说明" 

推送tag

git push origin tagname
git push origin --tags 推送所有tag

删除tag

本地
git tag -d tagName
远程
git push origin :refs/tags/tagName
或者git push origin --delete tagname(注意有可能tagname和branchname同名)

拉取tag

查看远程tag
git ls-remote --tags origin
拉取当前分支的tag
git fetch origin -p 
如果tag不在当前分支上,就不会默认被拉取
git fetch --tags 强制拉取所有tag
或者
git fetch origin --prune-tags

删除所有本地tag

git tag -l | xargs git tag -d

分支相关

删除分支

git branch -d branchname
远程
git push origin --delete branchname

git branch -d <branchName>  如果该分支有提交未进行合并,则会删除失败。
git branch -D <branchName>  如果该分支有提交未进行合并,也会删除成功。

分支重命名

git branch -m oldBranchName newBranchName

从分支拉代码

git clone --branch branchName --depth 1 仓库地址 本地目录

从远端拉取所有信息

git fetch origin --prune

同步某次提交到当前分支

git cherry-pick commitID

附录

命名

Tag格式: 主版本号.次版本号.修订号-类型标签,其中类型标签可为:alpha、beta、rc、r。

Tag示例:1.0.0-alpha、1.0.0-beta、1.0.0-rc、1.0.0-r

开发环境:dev-->alpha 测试环境:test-->beta 灰度环境:pre-->rc 生产环境:pro-->r

1.Base版: 此版本表示该软件仅仅是一个假页面链接,通常包括所有的功能和页面布局,但是页面中的功能都没有做完整的实现, 只是做为整体网站的一个基础架构

2.Alpha版: 此版本表示该软件在此阶段主要是以实现软件功能为主,通常只在软件开发者内部交流,一般而言, 该版本软件的Bug较多,需要继续修改

3.Beta版: 该版本相对于α版已有了很大的改进,消除了严重的错误,但还是存在着一些缺陷, 需要经过多次测试来进一步消除,此版本主要的修改对像是软件的UI

4.RC版: 该版本已经相当成熟了,基本上不存在导致错误的BUG,与即将发行的正式版相差无几

5.Release版: 该版本意味“最终版本”,在前面版本的一系列测试版之后,终归会有一个正式版本,是最终交付用户使用的一个版本。 该版本有时也称为标准版。一般情况下,Release不会以单词形式出现在软件封面上,取而代之的是符号(R)。

alias

co = checkout
ci = commit
br = branch
st = status
unstage = reset HEAD --
last = log -1 HEAD
mg = merge --no-ff
pm = pull origin master --rebase
glog = log --pretty=oneline --graph
df = difftool
sh = stash
pl = pull --rebase
ph = push
sp = stash pop
lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'
rv = revert --soft HEAD^
pr  = "!f() { git fetch -fu ${2:-$(git remote |grep ^upstream || echo origin)} refs/pull/$1/head:pr/$1 && git checkout pr/$1; }; f"
pr-clean = "!git for-each-ref refs/heads/pr/* --format='%(refname)' | while read ref ; do branch=${ref#refs/heads/} ; git branch -D $branch ; done"
# for bitbucket/stash remotes
spr  = "!f() { git fetch -fu ${2:-$(git remote |grep ^upstream || echo origin)} refs/pull-requests/$1/from:pr/$1 && git checkout pr/$1; }; f"