Git推动非裸机回购,保存当前的工作树

时间:2013-05-14 18:15:15

标签: git

如何推送到非裸git存储库,自动添加并提交工作树中的任何更改,然后重新签出当前分支以反映该推送的更改?

我在考虑这样的事情:

在遥控器上添加一个钩子(非裸仓库)以运行git add . && git commit -m "Automated commit" && git reset --hard

该方法有任何缺点吗?还有另一种方法吗?


(免责声明:我知道这不是最理想的情况,但这是我们公司所拥有的,我希望尽可能简化,而不需要每个人都完全改变他们做事的方式)< / p>

谢谢!

1 个答案:

答案 0 :(得分:1)

在搞乱之后,我发现了一个非常好的解决方案。

预收钩: 检查工作目录中的任何更改,添加/提交它们,然后在推送之前提醒用户他/她需要合并

#!/bin/sh
cd ../
unset GIT_DIR
CHANGED=$(git diff-index --name-only HEAD --)
if [ -n "$CHANGED" ]; then
    git add -u .
    git commit -m "Automated commit"
    echo "There were uncommitted changes in the working directory...please pull them and push your changes again"
    exit 1
fi 

收件后挂钩:强制检出当前分支,以便更改显示在工作目录中。这将覆盖工作目录中的任何更改,但这些更改已由预接收挂钩添加/提交/合并。

#!/bin/sh
cd ../
unset GIT_DIR
branch=$(git branch | sed -n -e 's/^\* \(.*\)/\1/p')

git checkout -f $branch


echo "Update pushed to branch $branch and checked out in the website directory"