将文件夹中的每个更改提交到git存储库
我想使用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函数来创建更高
vagrant up
或vagrant provision
)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"