【问题标题】:Cloning a repo from someone else's Github and pushing it to a repo on my Github从别人的 Github 克隆一个 repo 并将其推送到我的 Github 上的 repo
【发布时间】:2013-08-14 13:07:53
【问题描述】:

我在https://github.com/railstutorial/sample_app_rails_4 克隆了repo 并对其进行了很多更改(我将它用作我自己的应用程序的起点),现在我想将更改后的应用程序推送到我自己的github 上的repo帐户。

如何更改它链接到的 github 存储库?

【问题讨论】:

标签: git github


【解决方案1】:

取自Git push everything to new origin

基本上你必须将一个新的 repo 关联到你的文件夹

git remote add origin <address>
git push origin <branchname>

【讨论】:

  • origin 已经存在 - 你必须 rmrenameset-url 它。
【解决方案2】:

您可以通过从本地存储库(通过命令行)创建新的远程来做到这一点。

git remote add <name> <url>

然后你可以调用:

git push <name> <repo_name>

要替换设置的默认“原点”远程,您可以运行以下命令:

git remote rm origin
git remote add origin <url>

【讨论】:

  • 我最初是这样做的,但我一直收到错误消息说我没有访问权限(我不知道确切的消息 b/c 我现在不在我的电脑上,但我可以稍后添加)。谢谢
  • 您可能必须先在您的远程帐户上创建存储库,然后使用该 url 配置新的远程。
  • 这就是我所做的(首先在 github.com 上直接创建 repo)。我重新初始化了本地 repo (git init),删除了远程的 (rm origin) 并重新添加了 origin。这一切都奏效了,但是当我尝试推送到回购协议时,我得到了“致命错误”,上面写着“拒绝访问”
  • 尝试运行“git config --list”并确保您使用的是正确的用户和遥控器。
  • 我运行了 git config --list 并且用户名、电子邮件和远程都正确。如何确认我的密码存储正确?我可以重新输入密码吗?
【解决方案3】:

我认为这样做“最礼貌的方式”是:

  1. 在您的 GitHub 帐户上复制原始存储库
  2. 为您的更改签出一个新分支git checkout -b &lt;your_branch_name&gt;(以防您之前没有这样做)
  3. 为您的本地存储库添加一个新的远程:git remote add github &lt;your_repository_ssh_url&gt;
  4. 将漂亮的新分支推送到 github 存储库:git push github &lt;your_branch_name&gt;

通过这种方式,您将拥有一个与原始版本分叉的 repo,并将您的更改提交到一个单独的分支中。如果您想向原始存储库提交拉取请求,这种方式会更容易。

【讨论】:

  • 我花了一分钟时间注意到这些说明中的github 是通常称为origin 的位。否则,简单明了。
【解决方案4】:

正如 Deefour 所说,您的情况与Change the URI (URL) for a remote Git repository 中的情况并无太大区别。当您 clone 存储库时,它会添加为您的 remote,名称为 origin。您现在需要做的(因为您不再使用旧源)是更改 origin 的 URL:

$ git remote set-url origin http://github.com/YOU/YOUR_REPO

如果原始存储库会经常更新并且您希望不时获得这些更新,那么最好添加一个新的origin,而不是编辑remote

$ git remote add personal http://github.com/YOU/YOUR_REPO

或者甚至可以打电话给旧的upstream

$ git remote rename origin upstream
$ git remote add origin http://github.com/YOU/YOUR_REPO

然后,每当您想从upstream 获取更改时,您都可以:

$ git fetch upstream

由于这个源是一个示例存储库(似乎是一种开始的模板),我认为根本不需要保留它或分叉它 - 我将在这里使用第一个替代方案.

【讨论】:

  • 我最初是这样做的(我在不同的时间尝试了这两个选项),但我一直收到错误消息说我没有访问权限(我不知道确切的消息 b/c 我不是现在在我的电脑上,但我可以稍后添加)。谢谢
  • @jackerman09:请尽可能提供错误消息,以便我们解决。
  • 这是我在运行 git push 到现有仓库时收到的错误消息:权限被拒绝(公钥)。致命:无法从远程存储库中读取。请确保您拥有正确的访问权限并且存储库存在。
  • @jackerman09: Verify the public key is attached to your GitHub account (或者阅读漏洞页面,如果这没有帮助)。或者你可以试试using HTTPS authentication
  • 感谢您的帮助!答案是我正在使用的计算机上没有 ssh 密钥。以下是我用来解决所有问题的网站:1)help.github.com/articles/generating-ssh-keys 和 2)help.github.com/articles/error-permission-denied-publickey 再次感谢!
【解决方案5】:

我有类似的情况,但在我的情况下,我只需要按照建议使用 https,如下所示:

$ git remote set-url origin https://github.com/YOU/YOUR_REPO

【讨论】:

    【解决方案6】:

    GitHub:git clone 别人的仓库 & git push 到你自己的仓库

    我将其他人的存储库称为其他存储库


    1. github.com 创建一个新的存储库。(这是你的存储库

      • 将其命名为与其他存储库相同的名称。
      • 不要使用 README、.gitignore 或许可证对其进行初始化。
    2. 其他存储库克隆到您的本地计算机。(如果您还没有这样做的话)

      • git clone https://github.com/other-account/other-repository.git
    3. 将本地存储库的当前“origin”重命名为“upstream”。

      • git remote rename origin upstream
    4. 为本地存储库提供一个指向您的存储库的“origin”。

      • git remote add origin https://github.com/your-account/your-repository.git
    5. 将本地存储库推送到 您在 github 上的存储库

      • git push origin master

    现在 'origin' 指向您的存储库,而 'upstream' 指向其他存储库.

    • 使用git checkout -b my-feature-branch 为您的更改创建一个新分支。
    • 您可以像往常一样git commit 您的存储库
    • 使用git pull upstream master 将更改从其他存储库拉取到您的主分支。

    【讨论】:

    • 解释清楚 +1
    • 您能否介绍如何(除了上述内容)向“其他存储库”发出拉取请求?这将使它成为一个非常有用的迷你教程
    • @TanyaGupta GitHub 在Creating a pull request from a fork 上有一个很棒的教程页面。
    • 优秀的解释,简短,简单
    • 很好的解释,但是当我尝试git push origin master 我得到:... Compressing objects: 100% (1093/1093), done. Writing objects: 100% (4185/4185), 504.89 KiB | 126.22 MiB/s, done. Total 4185 (delta 3049), reused 4185 (delta 3049) remote: Resolving deltas: 100% (3049/3049), done. remote: pre-receive.sh: execution exceeded 5s timeout To https://github.com/your-account/your-repository.git ! [remote rejected] master -&gt; master (pre-receive hook declined) error: failed to push some refs to 'https://github.com/your-account/your-repository.git'
    【解决方案7】:

    删除 git 并重新初始化。

    你的目的可能是把这个 repo 放在你的身上,让它成为你的。

    想法是删除.git/并重新初始化。

    1. 转到克隆的 repo 文件夹 rm -rf .git
    2. 重新初始化它,然后添加您的遥控器并进行第一次推送。
      git init
      git add .
      git commit -m "your commit message"
      git remote add origin 
      git push origin master
      

    【讨论】:

    • 您甚至必须先删除.git 目录吗? git init 不会把它抹掉吗?
    • @MikeWise:不,如果仓库已经存在,git init 永远不会破坏任何数据,但我认为可以通过您传递的命令行参数更改一些设置。
    【解决方案8】:

    克隆后,将文件夹中的文件复制到新文件夹中,然后重新开始 git初始化,

    我遇到了类似的问题,我必须先更改文件夹目录,然后才能将更改暂存到我的存储库。

    或者您可以通过命令删除当前存储库来源 git 远程删除原点。

    【讨论】:

      【解决方案9】:

      为了省事,我通常会这样做

      1. 将其克隆到临时目录
      2. 使用 README 创建新的 git 存储库
      3. 将该 repo 克隆到我的机器上
      4. 从原始文件中删除所有 git 文件
      5. 将所有文件复制到我的仓库
      6. 推一下

      在那里照常进行,你不会被 git 的问题绊倒。我经常这样做。当然不像其他答案那样“纯粹”,但没有创伤并且消除了您可能遇到的任何潜在问题。

      【讨论】:

        【解决方案10】:

        我也有同样的问题。如果你只是想要 repo 中的文件并像普通文件一样推送它们,你可以..

        1. 下载压缩包
        2. 打开终端(或 windows 上的 cmd)
        3. 删除 .github 和 .gitigore 文件 (rm -r .github)(rm .gitigore)
        4. 将目录复制并粘贴到您的项目中
          Github 不会知道这些来自另一个仓库,因为配置文件已经消失。

        它没有过多地使用命令行并遇到问题的麻烦。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-05-26
          • 2019-06-29
          • 2013-08-04
          • 1970-01-01
          • 1970-01-01
          • 2021-07-16
          • 1970-01-01
          • 2014-03-03
          相关资源
          最近更新 更多