如何确保我从GitHub运行最新版本的代码

时间:2017-10-30 16:59:53

标签: git github ssh version-control remote-server

我对git相当新,我对如何设置工作流以尽可能最方便的方式工作感到困惑。

我正在使用我的笔记本电脑(运行OSX)和我们更强大的服务器(运行CentOS)通过ssh,我尝试为我的Python代码运行耗时的测试。这样做了几个月我很快意识到我有平行但分开的开发线,因为文件夹结构完全不同。

因此我花时间设置了一个github repo并将其克隆到我的笔记本电脑中。然后我将python文件成对(服务器版本与笔记本电脑版本)手动合并差异并将文件推送到Github。最后我克隆了服务器上的repo。现在我在所有三个地方都有相同的版本,这很棒。

将来,我想避免不同平台之间的分歧。理想情况下,我希望自动每次登录时都能与Github同步本地仓库(理论上应该可以在.bashrc中执行?),并注销服务器。基本上我试图避免忘记在不同机器之间手动同步的可能性。

我怎样才能做到这一点?这个策略有没有潜在的陷阱?

1 个答案:

答案 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

Running .sh every 5 minutes

您还可以查看相关问题here