【问题标题】:Is it possible to pull/push changes to Git repository that was cloned on another PC?是否可以将更改拉/推到在另一台 PC 上克隆的 Git 存储库?
【发布时间】:2020-01-25 04:54:17
【问题描述】:

我知道我们可以从 GitHub(或任何 Git 服务器)等远程存储库克隆存储库,然后拉/推。

假设我的一位同事克隆了一个 Git 存储库(或使用 git init 创建一个 Git 存储库)。我可以在我的 PC 上将同事的 repo 添加为远程 repo 并将更改克隆/拉取/推送到我同事的 repo 吗?

如果是这样,那么任何计算机都是 Git 服务器吗?还是我们需要安装一些东西来使它成为一个 Git 服务器?

【问题讨论】:

  • 任何 Git 目录都是“Git 服务器”,因为它可以被克隆。如果您通过网络使该 Git 目录可用,那么托管该目录的服务器就是“Git 服务器”,因为有人可以克隆存储库,但没有特定于 Git 的服务器软件在起作用。

标签: git


【解决方案1】:

您可以使用local protocol:它假设您在同事的计算机上有一个可以访问的共享文件夹。

git clone //server/share/path/to/repo

如果您在 Windows 上,UNC path support has recently (Git 2.21, Q1 2019) been improved

Git“服务器”是 Git + 一个监听器(SSH 或 HTTPS 服务器)。
在某些情况下,该侦听器可以添加身份验证甚至授权。

但 Git 本身管理文件(文件历史记录)。它不是服务器。

【讨论】:

  • 那么任何计算机都是GIT服务器?
  • @variable Git 本身不是服务器。只有侦听器(ssh 或 https)才能使其成为服务器。 Git 管理文件。包括通过共享文件系统访问的文件。
  • 好的,所以 GIT 存储库本身就像一个服务器?
  • @variable Git 存储库本身只是一个文件集合,由工具 git 管理。要存在“服务器”,您需要一个监听器(SSH 或 HTTPS),它会依次调用 Git。这就是git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols 所描述的。 HTTPS 服务器示例(调用 Git):git-scm.com/book/en/v2/Git-on-the-Server-Smart-HTTP
【解决方案2】:

是的,这是 git 的核心原则之一:它是 distributed

这意味着没有 repo 本身就是中心。当团队使用像 github/bitbucket 这样的在线 git 平台时,这只是一种方便的选择,如果需要,可以随时撤销它以用于另一个工作流。

(就此而言,您也可以在您的机器上拥有一个 repo,然后在同一台机器上克隆它,然后在这两者之间拉/推。)

作为旁注,即使不是您问题的核心,还有其他一些东西会诱使一些人认为他们的在线存储库与本地存储库“不同”:这是您可以拥有完整克隆或裸克隆的事实。裸克隆受到限制,主要是因为没有工作树并且只能通过拉/推进行交互。 Github 存储库就是这样,许多团队在中心化角色中使用裸存储库。因此混乱。

【讨论】:

  • 那么任何一台计算机都是GIT服务器?
  • 任何 repo 都是。您可以拥有多台同一台计算机。条件是,是的,在机器上安装了 git。然后它可以拥有任意数量的存储库,以及每个存储库的任意数量的克隆。
猜你喜欢
  • 2013-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-03
  • 1970-01-01
  • 2012-09-03
相关资源
最近更新 更多