1

我有一个这样的目录结构: ~/main/sub 。在主文件夹中,我有一个 git 存储库。它忽略了子目录(主目录中有更多内容。)我需要这两个位于两个不同的来源,所以我在子目录中添加了一个新的 git repo。但我需要同时提交和推动他们两个。因此,我将以下代码添加到主目录 repo 中的commit-msg挂钩中。

echo "Commiting Content"

now=$(date +"%c")
cd sub
git add --all .
git commit -a -m "$now Update"

echo "Commiting Content complete!"

但是每次我运行提交时,这段代码都会执行但它会崩溃。index.lock 文件将保留在子目录的 .git 文件夹中。它甚至不会将文件添加到提交中。当我转到子文件夹并使用git status时,它会告诉我还有未跟踪的文件!

然后我将代码放在同一个 hooks 文件夹中的一个单独的 bash 脚本中。在终端中执行它并且它工作!为什么这行得通并且钩子文件失败了?

4

1 回答 1

0

该钩子在您的 git 存储库的根目录中运行。如果main是根目录,你只需要做cd sub而不是cd main/sub.

你使用git 子模块吗?它可能适用于您的情况;它不会同时提交两个 repos,但如果sub是 的子模块main,您可以先提交sub,然后将此提交添加为更改main并提交。这样,其他人就可以查看您提交给 mainmain的最新版本。sub

于 2013-08-03T08:33:55.963 回答