代码之家  ›  专栏  ›  技术社区  ›  Tryer

将两台不同计算机上的两个预先存在的本地文件夹合并到一个共享在线存储库中

git
  •  0
  • Tryer  · 技术社区  · 6 年前

    相当地 在两台不同的机器上。

    例如,我在机器1上有: "c:\user\tryer\myprojects\file.cpp"

    "e:\user\tryer\myprojects\file.cpp" (请注意同一文件的不同绝对路径。)

    这两个路径指的是同一项目的同一个文件,我有时在机器1上工作,有时在机器2上工作。

    我通过在两台机器上独立运行的google drive在网络上同步这两个文件夹,以便对其中一个文件夹的更改自动同步到另一个文件夹。

    现在,我想创建一个 常见的 通过github对此文件进行在线源代码控制(例如 http://github.com/tryer/myprojects.git )所以我可以在任何一台机器上使用git。也就是说,机器1上的任何更新 file.cpp 应能够承诺在线回购,以及随后的任何其他未来更新 file.cpp 还应能够承诺相同的普通在线回购。

    从我到目前为止所读到的内容来看,虽然两个不同的本地存储库可能共享同一个公共在线存储库,但似乎需要从在线存储库重新克隆到机器2,例如从机器1进行初始提交。但我不想这么做。我不想在任何机器上本地删除任何文件或文件夹,但仍然拥有相同的联机存储库,该存储库是共享的、通用的,并且可以从任何一台机器访问。

    有没有办法做到这一点?我担心的是,如果我从机器1执行第一次提交,那么机器1的绝对地址或特定于机器1的某些内容会在线存储,因此在稍后更新机器2的在线回购时会产生冲突,因为机器2对同一文件具有不同的绝对地址。

    0 回复  |  直到 6 年前
        1
  •  1
  •   VonC    6 年前

    您不必删除机器2上的任何内容,前提是您的在线回购仅包含该文件。

    cd /path/to/local/file
    git init .
    git remote add origin https://github.com/<me>/<CommonProject>
    git fetch
    git switch -c master
    

    这个 OP Tryer 报告 in the comments 在最后一步中看到错误( fatal: a branch named master already exists ),但这是因为来自计算机1和2的文件夹是同步的,这是我的做法 often advised against .

    初始化机器2上的文件夹后,您可以将其推回GitHub,并从机器1中拉出。