我有一个像这样的目录结构:〜/ 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文件将保留在 sub 目录的.git文件夹中。它甚至不会将文件添加到提交中。当我转到子文件夹并使用 git status 时,它会告诉我还有未跟踪的文件!
然后我将代码放在同一个hooks文件夹中的单独bash脚本中。在终端执行它,它工作了!为什么这样做和钩子文件失败?
答案 0 :(得分:0)
钩子运行在git存储库的根目录中。如果main
是根目录,则只需cd sub
代替cd main/sub
。
您使用git submodules吗?它可能适用于您的情况;它不会同时提交两个repos,但如果sub
是main
的子模块,则可以先提交sub
,然后将此提交添加为main
的更改,承诺。这样,其他人就可以使用您提交给main的最新main
修订版本sub
查看。