git常用命令

1、查看分支

  • 查看本地分支和远程分支    

    git branch -a

  • 显式地获得远程引用的完整列表     

    git ls-remote (remote)

  • 获得远程分支的更多信息     

    git remote show (remote)

  • 更新远程分支列表

    git remote update origin –prune

  • 删除远程不存在的分支列表

    git remote prune origin

2、创建dev分支,然后切换到dev分支:

$ git checkout -b dev
Switched to a new branch 'dev'

git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

$ git branch dev
$ git checkout dev
Switched to branch 'dev'

3、拉取远程分支并创建本地分支

$ git checkout -b 本地分支名x origin/远程分支名x

使用该方式会在本地新建分支x,并自动切换到该本地分支x
采用此种方法建立的本地分支会和远程分支建立映射关系
 

$ git fetch origin 远程分支名x:本地分支名x

使用该方式会在本地新建分支x,但是不会自动切换到该本地分支x,需要手动checkout
采用此种方法建立的本地分支不会和远程分支建立映射关系

4、把分支推到远程分支

$ git push origin test  

5、删除本地分支

$ git branch -d xxxxx 

6、删除远程分支

  • Git v1.7.0 之后

    git push origin –delete <branchName>     

  • 否则

    git push origin :<branchName>

7、删除tag

-Git v1.7.0 之后    

git push origin –delete tag <tagname>      


  • 否则

git tag -d <tagname>
git push origin :refs/tags/<tagname>

8、把本地tag推送到远程

git push –tags

9、获取远程tag

git fetch origin tag <tagname>

10、git代码库回滚: 指的是将代码库某分支退回到以前的某个commit id

  • 【本地代码库回滚】:

    git reset --hard commit-id :回滚到commit-id,讲commit-id之后提交的commit都去除
    
    git reset --hard HEAD~3:将最近3次的提交回滚
  • 【远程代码库回滚】:
    这个是重点要说的内容,过程比本地回滚要复杂
    应用场景:自动部署系统发布后发现问题,需要回滚到某一个commit,再重新发布
    原理:先将本地分支退回到某个commit,删除远程分支,再重新push本地分支
    操作步骤:

    1、git checkout the_branch
    2、git pull
    3、git branch the_branch_backup //备份一下这个分支当前的情况
    4、git reset --hard the_commit_id //把the_branch本地回滚到the_commit_id
    5、git push origin :the_branch //删除远程 the_branch
    6、git push origin the_branch //用回滚后的本地分支重新建立远程分支
    7、git push origin :the_branch_backup //如果前面都成功了,删除这个备份分支

如果使用了gerrit做远程代码中心库和code review平台,需要确保操作git的用户具备分支的push权限,
并且选择了 Force Push选项(在push权限设置里有这个选项)
另外,gerrit中心库是个bare库,将HEAD默认指向了master,因此master分支是不能进行删除操作的,最好不要选择删除master分支的策略,换用其他分支。如果一定要这样做,可以考虑到gerrit服务器上修改HEAD指针。。。不建议这样搞

11、git stash

git stash 可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug, 先stash, 使返回到自己上一个commit, 改完bug之后再stash pop, 继续原来的工作。

git stash                    # save uncommitted changes
git stash list               # list stashed changes in this git
git show stash@{0}           # see the last stash 
git stash pop                # apply last stash and remove it from the list
git stash apply stash@{1}    # 取出指定的版本的stash
git stash clear              # 清空 stash 栈
git stash --help             # for more info

12、把dev分支的工作成果合并到master分支上

$ git merge dev
Updating d17efd8..fec145a
Fast-forward
 readme.txt |    1 +
 1 file changed, 1 insertion(+)

git merge命令用于合并指定分支到当前分支。合并后,再查看readme.txt的内容,就可以看到,和dev分支的最新提交是完全一样的。

注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值