我对git相当新,我对如何设置工作流以尽可能最方便的方式工作感到困惑。
我正在使用我的笔记本电脑(运行OSX)和我们更强大的服务器(运行CentOS)通过ssh,我尝试为我的Python代码运行耗时的测试。这样做了几个月我很快意识到我有平行但分开的开发线,因为文件夹结构完全不同。
因此我花时间设置了一个github repo并将其克隆到我的笔记本电脑中。然后我将python文件成对(服务器版本与笔记本电脑版本)手动合并差异并将文件推送到Github。最后我克隆了服务器上的repo。现在我在所有三个地方都有相同的版本,这很棒。
将来,我想避免不同平台之间的分歧。理想情况下,我希望自动每次登录时都能与Github同步本地仓库(理论上应该可以在.bashrc中执行?),并注销服务器。基本上我试图避免忘记在不同机器之间手动同步的可能性。
我怎样才能做到这一点?这个策略有没有潜在的陷阱?
答案 0 :(得分:0)
对于git本身,没有这样的钩子或设置来自动将本地仓库与远程仓库同步。
解决方法是计划运行脚本以将本地仓库与远程仓库同步。
同步脚本示例(sync master
分支)如下:
#!/bin/sh
git fetch
flag=0
ahead=$(git log origin/master..master --oneline)
if [[ -z "${ahead// }" ]]; then
echo "Local repo has no commits un-pushed"
else
{
flag=1
echo "local master branch is ahead of origin/master $flag"
}
fi
behind=$(git log master..origin/master --oneline)
if [[ -z "${behind// }" ]]; then
{
if [ $flag == 0 ]; then
echo "already sync"
else
git push
fi
}
else
{
if [ $flag == 0 ]; then
git pull origin master
else
{
git pull origin master --rebase
git push
}
fi
}
fi
echo "Now the local repo is aync eith remote repo"
要安排运行脚本,您可以参考:
schedule running a bash shell script in windows
您还可以查看相关问题here。