【问题标题】:How can I make sure I am running the latest version of the code from GitHub如何确保我正在运行来自 GitHub 的最新版本的代码
【发布时间】:2018-04-11 17:53:53
【问题描述】:

我对 git 还很陌生,对于如何设置我的工作流程以尽可能方便地工作有点困惑。

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

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

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

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

【问题讨论】:

  • 这就是持续部署。这是an article,介绍了如何使用名为 Jenkins 的工具来实现这一点(Web 开发人员和 GitHub 用户中的一个流行选项......但还有很多很多其他选项)。
  • 对于那些根据广泛性投票接近的人,缺少哪些具体细节?我很乐意提供更多细节,但我觉得这个问题足够具体,足以保证有用的答案。对于这里的许多人来说,这可能很简单,但最后我检查了 SO 是人们提出问题以了解他们不太了解/不太了解的事情的地方。此外,一个问题可能有许多可能的解决方案这一事实并不意味着该问题无法回答。
  • From the FAQ: “避免在......每个答案都同样有效的情况下提出主观问题”我认为这是一个非常好的问题,只是不在SO上。整本书都写在 CI 和 CD 上。这里没有一个正确的答案……这完全取决于您的经验、预算、安全问题、工作流程、偏好等。这是一个非常广泛的主题。这非常接近“我应该使用哪个工具”类型的问题,但您避免直接问这个问题,所以我投票决定关闭“太宽泛”。 (虽然没有 -1)
  • 这里列出了一些关于这个主题的书籍:ssearch.oreilly.com/?q=continuous+delivery

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


【解决方案1】:

对于 git 本身,没有这样的钩子或设置可以自动将本地 repo 与远程 repo 同步。

解决方法是安排运行脚本以将本地存储库与远程存储库同步

同步脚本示例(同步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

您也可以联系issuehere

【讨论】:

    猜你喜欢
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 2014-08-12
    • 1970-01-01
    • 2023-04-09
    • 2011-09-14
    相关资源
    最近更新 更多