我在https://github.com/railstutorial/sample_app_rails_4并对其进行了大量更改(我将其作为自己应用程序的起点),现在我想将更改后的应用程序推送到我自己的github帐户上的回购。
如何更改它所链接的github回购?
正如Deefour所说,您的情况与更改远程Git存储库的URI(URL)中的情况没有太大不同。当您clone
存储库时,它将作为您的remote
添加,名称为origin
。您现在需要做的(因为您不再使用旧的源代码)是更改origin
的URL:
$ git remote set-url origin http://github.com/YOU/YOUR_REPO
如果原始存储库经常更新,并且您希望不时获得这些更新,那么最好添加一个新的remote
:,而不是编辑origin
$ 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
由于源代码是一个示例存储库(一开始似乎是一个模板),我认为根本没有必要保留它,也没有必要分叉它——我在这里选择第一个选项。
GitHub:git clone
他人的存储库&git push
到您自己的存储库
我将把其他人的存储库称为其他存储库。
- 在github.com上创建一个新的存储库。(这是您的存储库)
- 将其命名为其他存储库
- 不要使用README、.gitignore或许可证对其进行初始化
- 将其他存储库克隆到本地计算机(如果您还没有这样做)
git clone https://github.com/other-account/other-repository.git
- 将本地存储库的当前"原点"重命名为"upstream。"
git remote rename origin upstream
- 给本地存储库一个指向您的存储库的"原点"
git remote add origin https://github.com/your-account/your-repository.git
- 将本地存储库推送到github上的您的存储库
git push origin main
现在"原点"指向您的存储库&上游’指向其他存储库
- 使用
git checkout -b my-feature-branch
为您的更改创建一个新分支 - 您可以像往常一样
git commit
到您的存储库 - 使用
git pull upstream main
将更改从其他存储库拉到主分支
删除git并重新初始化
你的目的可能是把回购放在你的身上,让它成为你的。
其想法是删除.git/
并重新初始化
- 转到克隆的repo文件夹
rm -rf .git
- 重新初始化它,然后添加您的遥控器并进行第一次推送。
git init git add . git commit -m "your commit message" git remote add origin git push origin master
我认为这样做的"最礼貌的方式"是:
- 在您的GitHub帐户上分叉原始回购
- 为您的更改签出一个新分支
git checkout -b <your_branch_name>
(以防您以前没有这样做) - 为本地存储库添加新的远程:
git remote add github <your_repository_ssh_url>
- 将您美丽的新分支推送到您的github存储库:
git push github <your_branch_name>
通过这种方式,您将有一个分支到原始的回购,并在一个单独的分支中提交您的更改。如果您想向原始回购提交提取请求,这种方式会更容易。
您可以通过从本地存储库创建一个新的远程(通过命令行)来实现这一点。
git remote add <name> <url>
然后你可以打电话:
git push <name> <repo_name>
要替换默认的"原点"远程设置,您可以运行以下操作:
git remote rm origin
git remote add origin <url>
从Git获取,将所有内容推送到新的来源
基本上,你必须将一个新的回购与你的文件夹相关联
git remote add origin <address>
git push origin <branchname>
我也遇到过类似的情况,但在我的情况下,我只需要按照建议,使用https,如下所示:
$ git remote set-url origin https://github.com/YOU/YOUR_REPO
克隆后,将文件从其文件夹复制到新文件夹中,然后使用git init,
我也遇到了类似的问题,在对我的repo进行更改之前,我必须更改文件夹目录。
或者您可以通过命令删除当前存储库原点git远程删除原点。
为了避免混乱,我通常会做这个
- 将其克隆到临时目录
- 使用README创建新的git repo
- 将该回购复制到我的机器上
- 从原始文件中删除所有git文件
- 将所有文件复制到我的存储库
- 推动它
在那里照常进行,你不会被git的问题绊倒。我经常这样做。当然没有其他答案那么"纯粹",但没有创伤,可以消除你可能遇到的任何潜在问题。
使用vscode,这些其他解决方案对我来说不太管用,
相反,我运行
git初始化
这将使"新分支"按钮在您提交时生成一个全新的存储库。我不知道如何提交到一个尚未初始化的存储库中。
edit:由于我在学习教程,我对git不是很有经验,这些标志是更改git远程URL 后被远程拒绝的罪魁祸首(不允许浅层更新)
截至2022年12月,这对我有效。直接
-
我克隆了repo,然后在GitHub上创建了一个新的repo,它有一个新名称,没有文件
-
我复制了文件夹并将其重命名为
-
在终端(文件夹内)中,
rm -rf .git
对所有现有的git文件进行建模 -
I
git init
初始化 -
我
git add -- . ': path'
,其中的路径是一个具有较大权重的目录,我不想提交。如果添加所有,则会导致错误 -
git commit -m "message"
-
git remote add origin https://github.com/xxx/xxxx.git
至新建回购 -
git branch -M main
-
git push -u origin main
简单地说:
git remote add origin https://github.com/your-username/name-of-repo.git
git branch -M main
git push -u origin main
UPD:或者master
而不是main
取决于您的主早午餐的名称。
我也有同样的问题。如果你只想把文件放在repo中,并像推送普通文件一样推送它们,你可以
- 下载zip
- 打开终端(或窗口上的cmd)
- 删除.github和.gitigore文件(rm-r.github)(rm.gitigore)
- 将目录复制并粘贴到项目中
Github不会知道这些来自另一个repo,因为配置文件已经不见了
它没有太多扰乱命令行和遇到问题的麻烦。