使用Shell(bash) 来检查 git 本地某个分支是否存在

本文探讨了如何在Git中智能地检查和创建分支,避免冲突,以及正确使用`git checkout-B`命令。还介绍了检查本地分支存在的两种方法,并强调了`git reset`的潜在风险。

前言

工作中经常使用Git更新代码版本,有这样一个场景:

  • 如果分支已经存在,则将其打开并更新代码
  • 如果分支不存在,请创建它并打开它,然后更新代码

如果使用git checkout -b 命令,如git checkout -b foofoo分支上打开(如果不存在,它将创建此分支),但是如果foo分支已经存在,则会引发如下错误:

fatal: A branch named 'foo' already exists.

有人推荐git checkout -B命令

git checkout -B foo

-B手册页:

命令checkout -b创建一个新分支,然后签出(进入)到该分支。 因此,如果分支已经存在,则无法创建新分支。

相反,您需要执行以下操作:

git checkout -B <branchname>

上面的命令以上下文相关的方式执行。 如果有分支,它将切换,否则,它将创建(进入)并签出。

如果指定-B,则创建<new_branch>(如果不存在); 否则,将被重置。 这是交易的等价物

$ git branch -f <branch> [<start point>]
$ git checkout <branch>

如下所述,请谨慎使用它,因为它会重置分支,这并不总是可取的。
如果您确实使用此命令错误地重置了分支,则可以使用以下命令轻松地恢复到其先前的状态:

git reset HEAD@{1}

我使用以下命令来查找是否在我的存储库中存在一个本地git分支branch-name。它是否正确?有没有更好的办法?

请注意,我在脚本中这样做。

1.

git show-ref --verify --quiet refs/heads/<branch-name>
# $? == 0 means local branch with <branch-name> exists.

2.

git rev-parse --verify <branch_name>
# $? == 0 means local branch with <branch-name> exists.

或者

git show-ref -q --heads <branch-name>

在shell中可以这样写:

if git rev-parse --verify <branch_name>;then
     存在该分支
else
     不存在该分支
fi

bash shell会按顺序执行if语句,如果command执行后且它的返回状态是0,则会执行符合该条件执行的语句,否则后面的命令不执行,跳到下一条命令。
 

参考文章:

1.有没有更好的方法来确定是否存在本地git分支?

2.git-打开另一个分支(如果不存在则创建),而不检查是否已经存在?

3.shell中的if语句

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕城南风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值