【问题标题】:Publish a package to Bitbucket or GitHub将包发布到 Bitbucket 或 GitHub
【发布时间】:2014-08-19 11:55:11
【问题描述】:

在我的 Laravel 应用程序中,我创建了一个数据包(位于工作台目录中)。现在我想将它发布到我的私人 Bitbucket 存储库,以便我可以在不同的项目中使用它,一旦它准备好,我也想将它发布到 GitHub。但我不知道如何仅将新包的内容发布到新的 Bitbucket 存储库。

希望有人能指出正确的方向吗?

根据 Kacy Raye 的建议进行更新

这些是我采取的步骤。为了避免麻烦,我创建了一个新的目录并将 repo 克隆到该目录并将 repo 推送到一个新的 repo。

sudo mkdir <application>
sudo chown <user> <application>
git clone git@bitbucket.org:<user-name>/<old-repo>.git
git remote set-url origin git@bitbucket.org:<user-name>/<new-repo>.git
git push origin master

有了新的 repo 设置,我现在想将包(src dir 位于 workbench/user-name/package-name/)推送到新创建的包 repo。这些是我采取的步骤。

git remote add <package-name> git@bitbucket.org:<user-name>/<package-name>.git
git checkout -b <package-name>
git rm -r app/ artisan bootstrap/ bower.json composer.json CONTRIBUTING.md phpunit.xml public/ readme.md server.php # all files removed except the workbench dir
git rm -r --cached workbench/ # need only the package
git add workbench/<user-name>/<package-name>/
git commit -m'init'
git push <package-name> master # want the package pushed to the new repo on its master banch

然后所有文件都被推送到服务器,而不仅仅是我的 repo 的文件(甚至不像我之前提到的工作台目录):(

更新 2 在 Laravel IRC 聊天中,我讨论了这个问题并找到了解决方案!我只需要在wordkbench/&lt;vendor&gt;/&lt;package&gt; 目录中执行git init,添加新的远程、git commit 和git push。

【问题讨论】:

    标签: git laravel laravel-4 package bitbucket


    【解决方案1】:

    我对这个问题的理解是你有两个回购。一个用于整个项目,一个专门用于包。 目标是您只想推送包。

    为包添加专门的远程仓库后,您可以切换到新分支,从索引中删除所有不想推送的内容(也称为“暂存区”),将其提交到本地仓库,然后将其推送到您想要的远程仓库。

    git remote add <whateverYouWantToNameTheRemote> <URL the remote is located at>
    
    git checkout -b shinyNewBranch # (-b creates a new branch and switches to it)
    
    git rm <fileYouDontWant1> <fileYouDontWant2> ...
    
    # (Do a 'git add' here if you did not already add the package to the index)
    
    git commit -m "whatever commit message you want"
    
    git push <theNameYouGaveTheRemote> <branchYouWantToPushTo> 
    

    请记住,没有--cached 选项的git rm 不仅会从索引中删除文件,还会从工作目录中删除文件。只要您在切换的分支中提交了文件,这应该不是问题。当您使用 git checkout branchName 切换回该分支时,该分支的最新提交中的任何文件都将加载到工作目录中。

    【讨论】:

    • 只是为了确保我 100% 清楚这个问题,你想推送这个包,下次有人在远程仓库上做 git clone 之类的事情时,他们只会得到laravel 包?
    • 我刚刚修正了一些错别字。对不起,现在我的评论在你的下面。原始评论:“对不起,我觉得我不够清楚。我用来将整个应用程序推送到 repo,现在我只想推送 laravel 包。或者我只需要创建一个新的 repo 并替换我的常规通过'push laravel-package master'推送,其中 laravel 包是 repo 名称?我必须在哪里为这个新的(嵌套)repo 设置我的遥控器?“
    • 作为我的 laravel 应用程序的一部分,我创建了一个包。推送整个应用程序我没有问题。但是不知道如何仅根据工作台目录中的 laravel 手册推送包。所以我只想将包推送到一个单独的仓库。
    • 我建议只创建一个新分支,切换到它,然后对您不想推送的所有文件执行git rm --cached。这将从索引(暂存区域)中删除所有文件,并且当您推送时,删除的文件将不包括在内。您可以在工作目录中执行git remote add newRemoteRepoName &lt;URL of Repo&gt; 来添加遥控器,以便您可以开始推送它。如果这听起来像您正在寻找的东西,我会更详细地编辑我的答案。
    • 是的,这听起来像我正在寻找的东西。我主人的一个分支将只包含这个包。只是一个问题,没有(简单的)方法可以将这部分推送到新的/特定的存储库吗?
    猜你喜欢
    • 2021-04-08
    • 2021-11-19
    • 1970-01-01
    • 2018-11-10
    • 2020-05-13
    • 2023-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多