【问题标题】:Multiple git commands in single command executed in order they are encountered by compiler单个命令中的多个 git 命令按编译器遇到的顺序执行
【发布时间】:2017-10-05 02:11:30
【问题描述】:

我有以下按相应顺序运行的命令列表,以便可以提交源项目并将其推送到 Bitbucket 上的存储库:

git init
git remote add origin https://[BitBucket Username]@bitbucket.org/[BitBucket Username]/[BitBucket Repository Name].git
git config user.name "[BitBucket Username]"
git config user.email "[BitBucket Email ID]"
## if email doesn't work then use below ##
git config --global user.email \<\>
git add *
git commit -m "[Comment]"
git push -u origin master

现在不是将每一行放在各自的时间和顺序上,我想知道,是否有可能将所有这些链接到单个 git 命令并保持相同的顺序,如下所示?

git init remote add origin https://[BitBucket Username]@bitbucket.org/[BitBucket Username]/[BitBucket Repository Name].git  config user.name "[Username]" ....

或者至少组合多个相同的类别参数,如下所示?

git config user.name "[BitBucket Username]" user.email "[BitBucket Email ID]"

我需要通过示例了解这两种情况的可能性。

【问题讨论】:

  • 你到底想达到什么目的?逐行解决有什么问题?
  • ~/bin 中的 shell 脚本可以工作吗?否则,在用户的 ~/.gitconfig 文件中添加一个 git 别名以执行 shell 函数(IIRC 文档中有示例),例如stackoverflow.com/a/14994923/112968
  • 对于 Linux shell 脚本很好,但我在 Windows 系统上有 gitbash,我使用 Win 批处理不如使用 Linux shell。你能给我一个基于 Windows 的建议吗?
  • 有股票git,不,你不能。但是,您可以在 PATH 中的某处创建一个名为 git-whatever 的 shell 脚本,其中包含您的所有命令,如果需要,可以使用参数,因此您可以执行 git whatever(注意缺少空格)

标签: bash git-bash combiners git


【解决方案1】:

我在 Windows 系统上有 gitbash,但我使用 Win 批处理不如使用 Linux shell。

您仍然可以编写 bash 脚本(由嵌入的 msys2 bash 解释 with Git for Windows)。
正如Lasse V. Karlsen 提到的in the comments 和我之前在“Which shell used for git '!' aliases?”中提到的,您可以在名为git-xxx 的文件(在您的%PATH% 中)中编写一个shell 脚本,并使用git xxx 调用它.
该脚本的开头为:

#!/bin/bash

【讨论】:

  • 下面的不行,能行吗? cmd=('add .' "commit -m $commit"); for elem in ${cmd[@]} ; do; git "$elem" &amp;&amp;; # echo -n "$elem"; done; 它为元素数组中的每个单词创建一个新行。 echo -n 可以抑制换行符,但无济于事,因为我不想回显而是运行 git。
  • @Timo 我会一直使用双引号,如stackoverflow.com/a/7774197/6309
【解决方案2】:

我们可以在单个命令中使用 list off 命令,例如:

git add . && git commit -m "updated pom file" && git push

或:

git stash pop && git add . && git commit -m "updated pom file" && git push
  • &amp;&amp; -> 如果第一个命令成功执行,则执行下一个命令,否则不会执行下一个命令。
  • &amp; - 它执行所有命令
  • || - 如果第一个命令失败,则执行下一个命令

【讨论】:

  • 这仅适用于 Windows 上的 CMD 或 Git Bash,不适用于 PowerShell
【解决方案3】:

如果您在 Windows shell 中:

git add . ; git commit -m "Testing one line command" ; git push

【讨论】:

    猜你喜欢
    • 2010-11-23
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多