linux看git 创建分支、删除本地分支、查看远程分支、本地分支例子

1 查看远程分支

$ git branch -a
 
* br-2.1.2.2
 
master
 
remotes/origin/HEAD -> origin/master
 
remotes/origin/br-2.1.2.1
 
remotes/origin/br-2.1.2.2
 
remotes/origin/br-2.1.3
 
remotes/origin/master

2 查看本地分支

$ git branch
 
* br-2.1.2.2
 
master

3 创建分支

shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei (br-2.1.2.2)
 
$ git branch test
 
$ git branch
 
* br-2.1.2.2
 
master
 
test

4 切换分支到test

shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei (br-2.1.2.2)
 
$ git branch
 
* br-2.1.2.2
 
master
 
test
 
shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei (br-2.1.2.2)
 
$ git checkout test
 
M jingwei-server/src/main/java/com/taobao/jingwei/server/service/cmd/GetCustomerTarCmd.java
 
M jingwei-server/src/main/java/com/taobao/jingwei/server/util/ServerUtil.java
 
Switched to branch 'test'
 
shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei (test)
 
$ git branch
 
br-2.1.2.2
 
master
 
* test

5 删除本地分支   git branch -d xxxxx

$ git checkout br-2.1.2.2
 
M jingwei-server/src/main/java/com/taobao/jingwei/server/service/cmd/GetCustomerTarCmd.java
 
M jingwei-server/src/main/java/com/taobao/jingwei/server/util/ServerUtil.java
 
Switched to branch 'br-2.1.2.2'
 
shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei (br-2.1.2.2)
 
$ git br
 
* br-2.1.2.2
 
master
 
test
 
shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei (br-2.1.2.2)
 
$ git br -d test
 
Deleted branch test (was 17d28d9).
 
shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei (br-2.1.2.2)
 
$ git br
 
* br-2.1.2.2
 
master

6 查看本地和远程分支  -a。前面带*号的代表你当前工作目录所处的分支

shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei (test)
 
$ git branch -a
 
br-2.1.2.2
 
master
 
* test
 
remotes/origin/HEAD -> origin/master
 
remotes/origin/br-2.1.2.1
 
remotes/origin/br-2.1.2.2
 
remotes/origin/br-2.1.3
 
remotes/origin/master

批量删除git分支

初级魔法:

要删除本地,首先要考虑以下三点

列出所有本地分支
搜索目标分支如:所有含有‘dev’的分支
将搜索出的结果传给删除函数
所以我们可以得到:

    git br |grep 'dev' |xargs git br -d
管道

频繁用于命令间的通信,比如此处可以将git br的结果传递给grep 'dev',其用法也是相当简单只要'|'连接两个命令即可 还有类似 ps -ef | grep 'uwsgi'的命令组合查找uwsgi的进城

grep

grep 可以用于在文件或流中查找匹配的结果,如grep 'abc' **/**.py查找当前目录下全部含有'abc'字符串的文件 并打印出结果

xargs

将前命令的执行结果作为参数传递给后一条命令。此处,我们是将所有含'dev'字符的分支名传递给git br -d

高级魔法:

删除远程分支git命令是:git push origin :dev相当于push一个空的分支覆盖远程分支 那么远程能否参考本地删除来做呢?——大体方向是对,不就是获得分支名,传给删除函数执行嘛

   git br -r| grep 'dev' |xargs git push origin :
但执行结果显然和我的预期不符,系统最后执行的命令类似于这样:

  git push origin origin/dev/fix:
显然 xargs 是将参数传到了:的前一位,而不是我们预期的后一位。解决的办法是?

xargs -i {} func  :{}
用 {} 表示传递过来的参数填充的位置 于是我们有了:

git br -r | grep 'dev' | xargs -i {} git push origin :{}

大功告成?——自然没有。系统执行是:git push origin :origin/dev/fix 原来grep出来的结果虽然是我们需要的分支,但它包含了origin,显然git 命令不会那么聪明的识别到 所以我们只能再辛苦点把前面的origin去掉咯。找了蛮久,满足要求的命令有sed 和awk,此处就先试试awk吧

awk

awk可谓上古神器也。其用法,都能写一本书啦……因为语法复杂,花了一点临时学了下。我们的目的很简单删掉origin,下面就看看怎么用牛刀来杀鸡 awk -F '[/]' '/1\/master/ {printf "%s/%s/%s\n", $2,$3,$4}' -F,设定分隔符为/, 匹配所有1/master的分支名(注意转义/),格式化输出origin/1/master/fix 分割后$1就代表origin,$3代表master 以此类推。所以在printf中格式化输出

好绕了那么多圈,现在终于可以把所有的拼在一起,然后痛快删掉远程那二十多个分支了

git br -r |awk -F '[/]' '/1\/master/ {printf "%s/%s/%s\n", $2,$3,$4}' |xargs -I {} git push origin :{}
注:br 是branch的缩写

时间: 2024-11-16 01:22:14

linux看git 创建分支、删除本地分支、查看远程分支、本地分支例子的相关文章

linux下如何创建和删除软链接和硬链接

在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问. 链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法.Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic link).符号连接相当于Windows下的快捷方式. 一.硬链接 硬链接说白了是一个指针,指向文件索

LINUX学习(九)Linux目录的创建与删除命令

mkdir命令 功能:创建一个目录(类似DOS下的md命令). 语法:mkdir [选项] dirname 说明:该命令创建由dirname命名的目录.要求创建目录的用户在当前目录中 (dirname的父目录中)具有写权限,并且dirname不能是当前目录中已有的目录或 文件名称. 命令中各选项的含义为: - m 对新建目录设置存取权限.也可以用chmod命令设置. - p 可以是一个路径名称.此时若路径中的某些目录尚不存在, 加上此选项后, 系统将自动建立好那些尚不存在的目录,即一次可以建立多

Linux目录创建与删除命令

Linux目录的创建与删除命令基础知识: 功能:创建一个目录(类似MSDOS下的md命令). 语法:mkdir [选项] dir-name 说明:该命令创建由dir-name命名的目录.要求创建目录的用户在当前目录中(dir-name的父目录中)具有写权限,并且dirname不能是当前目录中已有的目录或 文件名称. 命令中各选项的含义为: - m 对新建目录设置存取权限.也可以用chmod命令设置. - p 可以是一个路径名称.此时若路径中的某些目录尚不存在, 加上此选项后, 系统将自动建立好那

git 创建branch分支【转】

转自:http://www.cnblogs.com/jackluo/p/3499731.html   开发者user1 负责用getopt 进行命令解析的功能,因为这个功能用到getopt 函数,于是将这个分支命名为user1/getopt.(1)确保是在开发者user1的工作区中cd /home/jackluo/workspace/user1/workspace/hello-world(2)开发者user1 基于当前HEAD创建分支user1/getopt.git branch user1/g

Git查看、删除、重命名远程分支和tag【转】

转自:http://zengrong.net/post/1746.htm 本站文章除注明转载外,均为本站原创或者翻译. 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商: 本站部分原创和翻译文章提供markdown格式源码,欢迎使用文章源码进行转载: 本博客采用 WPCMD 维护: 本文标题:Git查看.删除.重命名远程分支和tag 本文链接:http://zengrong.net/post/1746.htm Git查看.删除.重命名远程分支和tag

git 创建branch分支

开发者user1 负责用getopt 进行命令解析的功能,因为这个功能用到getopt 函数,于是将这个分支命名为user1/getopt.(1)确保是在开发者user1的工作区中cd /home/jackluo/workspace/user1/workspace/hello-world(2)开发者user1 基于当前HEAD创建分支user1/getopt.git branch user1/getopt(3)使用 git branch创建分支,并不会自动切换.查看当前分支可以看到仍然工作在ma

git 创建远程分支的本地代码库

问题描述 git 创建远程分支的本地代码库 远程有分支origin/v3.0,在创建本地代码库的时候. 1.本地: git checkout v3.0 2.本地: git checkout -b v3.0 git reset --hard origin/v3.0 1和2的效果有区别吗? 解决方案 git checkout v3.0 这个只是切换,前提是已经创建了 git checkout -b v3.0 这个是在当前的分支下创建另一个分支并切换过去,至于内部原理 ,应该都一样 只是这样更方便些操

Linux下创建、删除和修改逻辑卷LVM的详细配置

逻辑卷管理与配置 在配置之前我们想一个问题,Linux我们都知道是一个多用户的模式,当我们前期规划导致我们的硬盘空间不够用的时候,我们一般的情况下是新增加硬盘,然后分区.格式化.然后将规划不合理的磁盘的数据复制过来,然后再重新挂载生效.如果我们多次这样的时候对我们系统管理人员来说是特别麻烦的一件事情.在这样的情况下,LVM就诞生了. 什么是LVM? LVM中文翻译逻辑卷管理,LVM最大的好处在于可以将多个硬盘整合到一起,让多个硬盘看起来像一个独立的硬盘(VG),然后我们把这个独立的硬盘(VG)可

Git远程03:分支的upstream

一个分支的upstream,其实就是与远程分支做关联,告诉git,默认此分支为推送及拉取的远程分支的信息. ## upstream的设置 基本设置 1 $ git branch --set-upstream-to=origin/dev 或 1 git branch -u origin/dev 在推送的同时,同时设置upstream 1 $ git push -u origin master 命令的含义是,推送master分支到远程origin仓库master分支,并且建立本地分支master的u