我应该如何从现有的Git回购协议中创建一个单独的项目?

我应该如何从现有的Git回购协议中创建一个单独的项目?,git,version-control,github,Git,Version Control,Github,我有一个网站,我已经在git跟踪,因为我开始工作。现在我想用类似的代码建立第二个网站。我的第一个想法是,“好吧,我将克隆ClientA的存储库,将克隆重命名为ClientB,然后从那里开始。”但在我看来,这并不是组织这个存储库的理想方式。最后,我想我希望有一个名为WebsiteBoolerplate的回购协议,每个客户都有几个分支机构。。还是应该为每个客户创建单独的回购协议这类事情有最佳实践吗?或者我应该按照自己的感觉去做吗?一旦我确定了我需要去哪里,我需要一些帮助,从这里到那里,我需要运行哪些

我有一个网站,我已经在git跟踪,因为我开始工作。现在我想用类似的代码建立第二个网站。我的第一个想法是,“好吧,我将克隆ClientA的存储库,将克隆重命名为ClientB,然后从那里开始。”但在我看来,这并不是组织这个存储库的理想方式。最后,我想我希望有一个名为WebsiteBoolerplate的回购协议,每个客户都有几个分支机构。。还是应该为每个客户创建单独的回购协议这类事情有最佳实践吗?或者我应该按照自己的感觉去做吗?一旦我确定了我需要去哪里,我需要一些帮助,从这里到那里,我需要运行哪些命令,这一切都取决于它,但是拥有一个主分支,在那里开发通用代码听起来是一种合理的方法。然后,您可以为每个站点设置不同的分支,并使特定于站点的分支与公共主机保持同步

创建特定于站点的分支很容易:

git checkout -b siteName
通过合并或重定主控形状的更改与主控形状保持同步

git merge master

如果您想在一段时间后拥有单独的存储库,您也可以这样做。只需分叉主回购,您仍然可以通过从“上游”存储库中下拉更改来保持同步

为了在git中分叉(与github上的分叉不同),我通常克隆origin,将origin重命名为upstream,然后推送到新的origin。我还设置了本地跟踪新原点

git remote rename origin upstream
git remote add origin https://origin.git
git branch --set-upstream master origin/master
git push origin master
假设您已经有一个远程命名原点,您希望将其重命名为上游,并在新原点上设置跟踪

git remote rename origin upstream
git remote add origin https://origin.git
git branch --set-upstream master origin/master
git push origin master
既然您在上游中有了通用代码,在原点中有了特定于站点的代码,您可以通过以下方式跟踪上游中的更改:

git fetch upstream master #checks if there are changes
git merge upstream/master #merges master with the changes in upstream

您可以将上述两个命令与git pull upstream master结合使用

可以提供帮助!一种可能的解决方案是在它自己的存储库和它自己的存储库中的每个项目中使用公共位。公共位只是项目中的一个子模块。你能用一个代码库支持两个网站吗?像多租户,css文件不同等等。谢谢@LukeHutton这是我的一个想法。我实际上在ClientA的回购协议中使用子模块。问题是,使用几乎完全相同的6-10个子模块重建第二次回购需要一点工作。这就是为什么我想从现有回购协议中复制新回购协议。