【问题标题】:Git Alias to chain add, commit, pull, push?Git Alias 链式添加、提交、拉取、推送?
【发布时间】:2014-02-04 12:09:10
【问题描述】:

我感兴趣的是创建一个别名,用于添加所有文件、提交消息、进行拉取,如果有任何冲突停止并显示冲突文件列表,否则推送。

我已经找到了列出冲突文件的别名 (git config --global alias.conflicts "diff --name-only --diff-filter=U"),但我不知道如何集成其余命令。

甚至可以用这种格式创建if 语句吗?

伪代码(多行可读性):

git config --global alias.commitall '!func(){ git add -A && git commit -am "$1" &&
             git pull && <conflict detection and possible die of command> &&
             git push; }; func'

【问题讨论】:

  • 这是个糟糕的主意。与其让添加错误内容和自动推送变得更容易,不如使用git add -p
  • 虽然我可以看到使用 -p 的好处(必须在手册中查找它 - goo.gl/BiRXFB - 看看它的作用)我会坚持使用 -a 因为如果我添加/删除了文件/目录,那么我也希望跟踪这些更改。我也不想接受每个文件更改,因为如果提交大量更改,这可能需要很长时间。不过,这只是我的看法。
  • 我通常只是为这种类型的东西创建shell函数或别名。
  • @bundacia 这就是我正在尝试的。你的别名是什么?
  • @RichardParnaby-King 您描述的情况正是您想要使用add -p 而您不应该使用add -a 的时候。迟早(根据您的描述,可能会更早)您会做出您不打算做的事情。

标签: git command-line


【解决方案1】:

无需在别名中添加冲突检查。如果在git pull 上检测到冲突,那么它会自动echos 出有冲突的文件并停止。这允许别名减少到以下内容(多行以提高可读性):

git config --global alias.commitall '!func(){ git add . && git commit -aqm "$1" &&
    git pull -q --no-progress && git push -q; }; func'

我添加了-q 参数来阻止调用回显正常的bumpf,但这是首选。

用法:

git commitall "message goes here"

【讨论】:

    【解决方案2】:

    我认为if 药水看起来像这样

    if [[ -n $(git diff --name-only --diff-filter=U) ]]; then
        git diff --name-only --diff-filter=U                 
    else                                                     
        git push                                             
    fi         
    

    This answer helped

    【讨论】:

    • 如果块确实有效。将它集成到上面的别名命令中,我得到git config --global alias.commitall '!func(){ git add -p &amp;&amp; git commit -am "$1" &amp;&amp; git pull &amp;&amp; if [[ -n $(git diff --name-only --diff-filter=U) ]]; then git diff --name-only --diff-filter=U else git push fi; }; func',当我运行它时,它给了我:syntax error near unexpected token '}'。有什么想法可以解决这个问题吗?
    • 语法错误是由 if then else fi 在一行引起的。谢谢:)
    • 是的,else 后面需要一个分号
    猜你喜欢
    • 2011-09-02
    • 2014-10-01
    • 2019-10-06
    • 2013-12-17
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多