有没有一种方法可以自动提出关于新子模块提交的提交消息



我在项目中使用一个库(比如foo(,而foo使用另一个库,比如bar,我也是foobar的维护者。

当我更改bar库中的某些内容时,我会使用适当的提交消息提交bar存储库中的更改。然而,在foomyproject中复制适当的消息是非常令人沮丧的,所以我只分别用update barupdate foo消息提交更改。

如何使用git commit命令向我推荐最新的子模块提交消息?

这是一种技巧,但这里有一种方法可以使用与最近的子模块提交相同的提交消息来提交超级项目中的子模块更改(假设您使用的是Bash(:

GIT_ALTERNATE_OBJECT_DIRECTORIES=.git/modules/<submodule-name>/objects git commit -C $(git -C path/to/submodule log --format=%h -1)

这在子模块中运行git log来获得最近一次提交的哈希,然后使用GIT_ALTERNATE_OBJECT_DIRECTORIES临时添加子模块对象目录作为超级项目的备用目录,以便Git可以读取子模块提交消息并将其用于超级项目提交。

如果barfoo存储库中被声明为子模块,则不需要复制任何内容。

cd /path/to/foo
git submodule add /url/to/bar
cd bar
# add and commit with proper message
git push
cd ..
git add bar
git commit -m "update bar"

重点是:您不需要复制bar提交消息,因为bar存储库就在foo中,并且您可以在foo/bar中直接查看bar文件历史记录及其原始提交消息。

最新更新