如何在仍然从Github提取更新的同时将工作推送到我自己的私人仓库中?

Joe*_*lAZ -1 git

首先,我告诉您我很困惑。我知道我我想做的事情,但我什至不知道如何去这样做。

我要完成的是从Github克隆一个公共仓库,但是要将该仓库存储在与我所在的计算机不同的计算机上。

或者也许你告诉我-...

有一个公共的Github存储库-Web应用程序的模板(https://github.com/WHMCS/templates-six

  • 我需要克隆此存储库(并且还能够继续提取将来的更改和更新)
  • 我需要能够在家中(Windows)工作站上修改此存储库
  • 我需要能够将修改后的存储库保存在[共享主机] Web服务器上。(仅通过ftp或ssh通过Internet访问)
  • 我不想单独登录Web服务器来推送/拉动/同步更改;这应该自动同步。由于我实际上并不需要本地更改(我不能在本地运行该应用程序,只能在Web服务器上运行),我认为我的“本地”存储库应该只存在于该文件系统上,但是这种假设可能是错误的。
  • 如果有任何冲突,我需要能够解决它们而不会破坏我的本地文件,也可能永远不会接受上游的更改。

我尝试搜索(在这里,谷歌,github帮助文档,其他),但我认为也许该术语一直使我感到困惑,但我找不到我的情况。在本地人,远程用户和客户端以及回购和分叉之间,我迷失了方向。还是不可能?idk。

我会很感激有人解释如何做到这一点,或者,如果真的只是简单/基本的东西,那么请指出每一端的正确术语,然后我将继续进行搜索。

或者,也许我真的把所有事情都弄乱了,在这种情况下,建议一种近似最终结果的方法。

谢谢

mka*_*erg 6

使用Git实际上这非常简单。有很多方法可以做到这一点。这是我会做的:

  1. 无论您想将项目放在哪里,都可以将仓库克隆到工作站上。 git clone git@github.com:WHMCS/templates-six.git
  2. 现在,cd templates-six。从现在开始,我们将在此存储库文件夹中运行git命令。
  3. 默认情况下,git创建了一个名为的远程origin。为了清楚起见,我们将其重命名。跑git remote rename origin github
  4. 在共享的托管Web服务器上创建一个裸存储库。随便叫什么。在UI中可能有一种方法可以执行此操作,也可以在终端中使用类似的方法来执行此操作git init --bare foobar.git
  5. 回到您自己的工作站上,将共享的Web服务器添加为远程服务器。您需要找出在此处使用的适当地址,但是它应该与此相似,后者使用SSH(与登录时使用的地址相同)。git remote add webserver ssh://joelaz@sharedhost.com:/home/joelaz/foobar.git
  6. master分支推送到Web服务器。git push webserver master:master。如果由于某种原因该方法不起作用,则可以安全地尝试-f,因为远程服务器上没有您关心的历史记录。
  7. 我将上游分支设置为您自己的Web服务器。git branch -u webserver/master。现在,默认情况下,git push将推送到您的网络服务器。

通过此设置,每当您希望从Github获取更新时,您都可以git fetch github然后git merge github/mastergithub的master分支合并到您自己的本地master分支中。最后,像以前一样,git push将其发送到您的网络服务器。你必须保持你的工作站上的代码(这可能是一个好想法),以及推动代码之前,你会做出改变和修复合并冲突那里webservergit push

为了帮助您了解正在发生的事情,请记住3个存储库(Github,工作站,服务器)中的每一个都维护自己的代码副本,以及任何分支的副本。您可以通过从工作站上的存储库中拉入和推送来在存储库之间移动代码。