将文件夹中的每个更改提交到git存储库

将文件夹中的每个更改提交到git存储库,git,bash,powershell,directory,Git,Bash,Powershell,Directory,我想使用git作为自动文件夹历史记录。我的流程大致如下所示: 在某些文件中进行更改 Git提交 运行我的命令(例如vagrant up或vagrant provision) 我想到的想法是: 1.为我的命令创建别名(在bash或powershell中,具体取决于操作系统) 2.在alias中始终运行git add.和git commit-m“txt”并在上面运行“real”命令 但上面的想法看起来很难看(例如“txt”总是静态的,不描述任何东西)。有人看到更好的吗?可以定义bash函数来创建更高

我想使用git作为自动文件夹历史记录。我的流程大致如下所示:

  • 在某些文件中进行更改
  • Git提交
  • 运行我的命令(例如
    vagrant up
    vagrant provision
  • 我想到的想法是: 1.为我的命令创建别名(在bash或powershell中,具体取决于操作系统) 2.在alias中始终运行
    git add.
    git commit-m“txt”
    并在上面运行“real”命令


    但上面的想法看起来很难看(例如“txt”总是静态的,不描述任何东西)。有人看到更好的吗?

    可以定义bash函数来创建更高级的别名

    在您的情况下,它可能如下所示:

    [alias]
        ...
        my_alias = "!f() { git add "./$GIT_PREFIX"; git commit -m '$1'; vagrant up; }; f"
    
    告诉git在bash上执行别名(非git别名)

    这将添加当前目录及其子目录中的所有文件,使用指定的消息提交它们,然后启动vagrant

    另一方面,此类非git别名将始终在存储库的根目录中执行,这意味着使用
    git add.
    将导致将整个存储库添加到索引中

    目前,我还没有找到一种简单的方法来绕过这个限制,因此您可能需要在之前手动添加有问题的文件


    EDITEtan提到存在的
    GIT\u前缀
    变量正是出于这个目的。我相应地编辑了答案。

    这就是变量
    GIT\u PREFIX
    在别名shell命令上下文中的作用。。。尽管如此,实际上没有理由将其作为git别名,而不是shell别名,后者不需要使用
    git\u前缀
    ,只需在当前目录上操作即可。@EtanReisner很高兴了解
    git\u前缀
    。创建git别名而不是shell别名可以使其独立于平台,并可以在Powershell或CMD中轻松使用。我认为这是一个优势。说它“独立于平台”有点夸张,但是的,这确实意味着它可以在非shell命令环境中使用,只要默认的shell git尝试使用它来执行可用的命令。
    git my_alias "my commit message"