89

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

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

4

10 回答 10

142

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

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

于 2013-08-13T03:59:31.453 回答
83

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. 为本地存储库提供一个指向您的存储库的“” 。

    • 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将更改从其他存储库拉到您的主分支。
于 2017-05-19T18:41:12.283 回答
15

删除 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
    
于 2017-12-14T04:32:15.687 回答
8

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

git remote add <name> <url>

然后你可以打电话:

git push <name> <repo_name>

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

git remote rm origin
git remote add origin <url>
于 2013-08-13T03:50:05.763 回答
7

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

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

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

于 2013-08-13T03:53:22.583 回答
1

取自 Git 将所有内容推送到新的起源

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

git remote add origin <address>
git push origin <branchname>
于 2013-08-13T03:48:31.323 回答
1

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

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

于 2014-05-30T23:22:45.003 回答
1

克隆后,将文件夹中的文件复制到一个新文件夹中,然后使用 git init 重新开始,

我有一个类似的问题,我必须先更改文件夹目录,然后才能将更改暂存到我的仓库。

或者您可以通过命令 git remote remove origin 删除当前存储库来源。

于 2020-04-28T13:03:39.797 回答
0

为了节省混乱,我通常这样做

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

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

于 2022-01-13T14:28:15.190 回答
-1

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

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

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

于 2022-01-22T20:00:51.933 回答