【问题标题】:Maintaining a clone of a git repository维护 git 存储库的克隆
【发布时间】:2017-02-09 21:47:03
【问题描述】:

我想在(自托管)bitbucket 服务器中克隆 github 存储库,并不时从 github 存储库中提取最新更改。在我们的克隆中,我们将做一些实验性的东西,它们永远不会离开我们的存储库。

为了说明;使用化石,我会确保我们的存储库和他们的存储库具有相同的项目 ID,我会这样做:

$ cd ~/checkout/prjdir
$ fossil pull https://their.org/prj/foo --once

这将获取所有最新的签到、分支、标签等。然后将其推送到我们组织的服务器:

$ fossil push

永远不会有任何冲突;我们的更改将在实验分支上进行,因此从上游更新时不需要任何合并。

我尝试复制化石工作流程并复制/粘贴了一些似乎相关的内容,并为初始克隆提出了这个:

$ git clone https://github.com/foo/bar.git
$ cd bar
$ git remote set-url origin https://ourbitbucket.org/foo/bar.git
$ git push -u origin master

然而,这似乎并没有带来标签(标签对我们很重要)。

使用 git(github 作为上游,我们的 bitbucket 服务器用于我们自己的标签/分支):

  1. 如何对存储库进行完整克隆(包括所有 分支和标签)?
  2. 一旦我有一个克隆的存储库,我该如何 从上游拉取所有最新的更改(包括分支、标签) (在 github 上)并将它们推送到我们的服务器(bitbucket)?

【问题讨论】:

  • 你怎么知道标签没有被克隆?或者你想push --tags
  • 这是否可以通过 git fetch --tags 来解决?
  • @choroba 似乎缺少“--tags”。谢谢。

标签: git clone fossil


【解决方案1】:

不要更改存储库的 URL。只需创建两个遥控器,upstreamorigin

默认情况下不推送标签。使用--tags 推送。

$ git clone https://github.com/foo/bar.git
$ cd bar
$ git remote rename origin upstream
$ git remote add origin https://ourbitbucket.org/foo/bar.git
$ git push -u --tags origin master

只要你想与上游同步,就做

$ git checkout master
$ git pull upstream master

甚至

$ git reset --hard upstream/master

并重新设置您的分支(或将 master 合并到其中)以将其更改合并到您的工作中:

$ git checkout my-branch
$ git rebase master

$ git checkout my-branch
$ git merge master

【讨论】:

  • 所以在初始克隆之后,我会使用“git pull upstream”,然后是“git push -u --tags origin master”?是否愿意通过初始后克隆工作流程示例来扩展答案?
  • @cypheratheist: clone 已经拉取,因此克隆后无需拉取上游。
猜你喜欢
  • 2013-07-14
  • 1970-01-01
  • 1970-01-01
  • 2018-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-04
  • 1970-01-01
相关资源
最近更新 更多