本地git函数

时间:2016-06-08 08:05:26

标签: git bash function local

我想出了如何使用我的主文件夹中的.bashrc文件(使用.bash_profile的解决方法)在git bash中加载函数来加载:

# Example
function cush() {
    git add Figures/;
    git commit -am "$1";   # Parse string to git
    git push;
}

但是这个函数专用于LaTeX,我实际上只需要在特定类型的存储库中工作时使用它。 所以我的问题是是否有一种方法可以在本地创建函数,这样它会在加载特定文件夹中的git bash时加载? 这激发了特定于存储库的功能,就像.gitignore一样。

2 个答案:

答案 0 :(得分:1)

This question可能有所帮助。我尝试了这个解决方案,它可以在我的Ubuntu15.x和git版本2.8.2中工作,而其他人有错误。

[alias] cush = !git add . && git commit -m $1 && git push && :

因此您可以将此别名添加到本地配置中并运行git cush <message>

答案 1 :(得分:1)

通常,您不必担心定义不必要的函数,除非您想为不同的依赖于上下文的函数使用相同的名称。 bash在工作目录更改时不直接提供用于执行代码的挂钩,但是您可以(ab)使用PROMPT_COMMAND每次根据$PWD的值有条件地执行代码显示新提示。

  1. 创建名为.bash-functions
  2. 的目录
  3. 将特定于LaTex的功能放在.bash-functions/latex
  4. 创建一个文件.bash-functions/un-latex,其中包含用于取消设置LaTeX特定功能的代码,例如

    unset -f cush
    
  5. 将以下内容添加到.bashrc

    source_local_functions () {
        source ./bash-functions/un-latex
        if [[ $PWD == foo ]]; then
            source ./bash-functions/latex
        fi
    }
    PROMPT_COMMAND=source_local_functions
    
  6. 现在,每次显示新提示时,bash将取消设置特定于LaTex的函数,如果您位于名为foo的目录中,则重置它们(您显然可以调整此测试应该使用LaTeX函数的真实目录。

    如果您要定义其他特定于目录的函数,则会变得难以处理,因为您需要跟踪要取消设置的函数以及为每次目录更改设置的函数。