从其他人的Github克隆回购,并将其推送到我的Github上的回购


Answers:


122

正如Deefour所说,您的情况与更改远程Git存储库的URI(URL)中的情况没有什么不同。当您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

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


我最初是这样做的(我在不同的时间尝试了这两个选项),但是我一直收到错误消息说我没有访问权限(我不知道确切的消息b / c我现在不在电脑上,但是我可以稍后再添加)。谢谢
jackerman09

@ jackerman09:只要有可能,请提供错误消息,以便我们解决。
mgarciaisaia 2013年

这是运行git push到现有存储库时收到的错误消息:权限被拒绝(公钥)。致命:无法从远程存储库读取。请确保您具有正确的访问权限,并且存储库存在。
jackerman09 2013年

1
@ jackerman09:验证公用密钥已附加到您的GitHub帐户(或如果没有帮助,请阅读漏洞页面)。或者,您也可以尝试使用HTTPS身份验证
mgarciaisaia

谢谢您的帮助!答案是我使用的计算机上没有ssh密钥。这是我用来弄清楚的站点:1)help.github.com/articles/generating-ssh-keys和2)help.github.com/articles/error-permission-denied-publickey 再次感谢!
jackerman09 2013年

58

GitHub:git clone其他人的存储库和git push您自己的存储库

我将把其他人的存储库称为另一个存储库


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

    • 给它起另一个仓库的名字
    • 不要使用自述文件,.gitignore或许可证对其进行初始化。
  2. 另一个存储库克隆到本地计算机。(如果您还没有这样做的话)

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

    • git remote rename origin upstream
  4. 给本地存储库一个指向您存储库的“来源” 。

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

    • git push origin master

现在,“原始”指向您的存储库,“上游”指向另一个存储库

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

1
+1
讲得

您能否包括(除上述内容之外)如何向“另一个存储库”发出拉取请求?这将使其成为一个非常有用的迷你教程
Tanya Gupta,

1
@TanyaGupta GitHub上有一个很棒的教程页面,介绍如何从fork创建拉取请求
Derek Soike

出色的说明性,简短而简单
Stryker

1
很好的解释,但是当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 -> master (pre-receive hook declined) error: failed to push some refs to 'https://github.com/your-account/your-repository.git'
user9074332 '19

12

删除git并重新初始化。

您的目的可能是将此存储库放在您的存储库中,然后将其制作为您的存储库。

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

  1. 转到您的克隆存储库文件夹 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还是不会抹掉它吗?
Mike Wise

1
@MikeWise:不,如果一个仓库已经存在,git init绝不会破坏任何数据,但是我认为可以通过传递的命令行参数来改变一些设置。
特工

8

您可以通过从本地存储库(通过命令行)创建一个新的远程服务器来实现。

git remote add <name> <url>

那么您可以致电:

git push <name> <repo_name>

要替换已设置的默认“原始”遥控器,可以运行以下命令:

git remote rm origin
git remote add origin <url>

我本来是这样做的,但是我总是收到一条错误消息,说我没有访问权限(我不知道确切的消息b / c我现在不在电脑上,但是我可以稍后添加)。谢谢
jackerman09

您可能必须先在远程帐户上创建存储库,然后使用该URL配置新的远程服务器。
bmorgan21

这就是我所做的(首先直接在github.com上创建存储库)。我重新初始化了本地存储库(git init),删除了远程存储库(rm origin)并重新添加了origin。一切正常,但是当我尝试推送到
仓库时

尝试运行“ git config --list”,并确保使用正确的用户和遥控器。
bmorgan21

我运行了git config --list,用户名,电子邮件和远程名是正确的。如何确认密码存储正确?我可以重新输入密码吗?
jackerman09'2013/08/

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>

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


1
让我花点时间注意一下github这些说明中通常称为的位origin。否则,简单明了。
leanne


0

我也遇到类似的情况,但就我而言,我只需要按照建议进行操作,但是使用https,如下所示:

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


0

克隆后,将文件从其文件夹复制到新文件夹,并使用git init重新开始,

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.