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

时间:2018-08-30 02:05:34

标签: git

我首先要告诉您我很困惑。我知道我想做什么,但我什至不知道如何去做。

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

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

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

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

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

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

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

谢谢

2 个答案:

答案 0 :(得分:4)

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

  1. 将存储库克隆到您想放置项目的任何位置。 git clone git@github.com:WHMCS/templates-six.git
  2. 现在,cd templates-six。从现在开始,我们将在此存储库文件夹中运行git命令。
  3. 默认情况下,git创建了一个名为origin的{​​{3}}。为了清楚起见,我们将其重命名。运行git remote rename origin github
  4. 在共享的托管Web服务器上创建一个裸存储库。随便叫什么。可能有一种方法可以在用户界面中执行此操作,也可以在终端中使用类似于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将推送到您的Web服务器。

通过此设置,只要您想从Github获取更新,就可以先git fetch github,然后再git merge github/master,将github的master分支合并到您自己的本地master分支中。最后,像以前一样,git push将其发送到您的Web服务器。您必须在工作站上维护代码(无论如何这可能是个好主意),并且在使用webserver将代码推送到git push之前,您将进行更改并解决其中的合并冲突。 / p>

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

答案 1 :(得分:0)

我建议您阅读Pro Git的前三章。它是免费的在线工具,涵盖了执行此类任务所需的大多数命令。时间不长。每天只要阅读一点,在不知不觉中,您将成为Git的高手。最终,您还需要在后面的章节中阅读有关在服务器上使用git的内容。