首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >git命令"git checkout master || :“

git命令"git checkout master || :“
EN

Stack Overflow用户
提问于 2017-12-06 06:40:19
回答 5查看 488关注 0票数 1

我正在尝试理解这个git命令。我有一个包含子模块的软件存储库,该子模块指向另一个子模块。为了检出,使用此命令-

代码语言:javascript
运行
复制
git submodule foreach --recursive 'git checkout master || :' 

这个问题是关于理解这个命令的。此命令中的"|| :“是什么意思?我提出这个问题是为了更灵活地根据需要更改这些命令。

在这个命令- foreach中,对于找到的每个子模块,执行master的签出,但这里的"|| and :“是什么意思。

EN

回答 5

Stack Overflow用户

发布于 2017-12-06 06:47:38

代码语言:javascript
运行
复制
git submodule foreach --recursive '<command>'

这将运行<command> in each checked out submodule

所以这就让命令本身去理解:

代码语言:javascript
运行
复制
git checkout master || :

git checkout master应该很清楚。

||是OR控制字符。对于command1 || command2,如果command1返回非零退出状态,则执行command2。所以基本上当command1失败的时候。

因此,在本例中,:会在git checkout master失败时运行。

另一方面,冒号是true in Bash的别名。因此,实际上,此命令不会做任何事情,如果可以,它将使完整命令运行git checkout master,否则它将静默失败。

票数 3
EN

Stack Overflow用户

发布于 2017-12-06 06:47:06

:是一个什么也不做却总是成功的外壳命令(类似于true)。因此,通过添加

|| :到命令行,则即使||左侧的命令失败,整个命令也将始终成功。在这种情况下,即使其中一个子模块不能签出master,它也会导致git submodule foreach继续。

git文档建议使用以下用法:

任意子模块中的命令返回非零将导致处理终止。这可以通过在命令末尾添加|| :来覆盖。

票数 1
EN

Stack Overflow用户

发布于 2017-12-06 06:46:05

cmd ||:只是确保命令始终成功的一种方法。如果cmd失败,则执行:并成功,因此$?将始终为0。所以基本上你的子模块foreach会忽略所有错误,检查出master。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47663832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档