繁体   English   中英

我想将我的代码推送到主分支上的 github 而不是主分支上

[英]I want to push my code to github on the main branch not on the master branch

我有一个包含代码文件的文件夹。 我想使用 git 将它们推送到 github。 这就是我所做的:

  1. 我在 github 上创建了一个新的存储库。

  2. 我在本地目录中初始化了 git 存储库。

  3. 我上演了我的文件。

  4. 我做出了最初的承诺。

  5. 然后我运行git remote add origin https://github.com/Lamphrangmi-Lamin/Bootcamp-Survey.git

  6. on branch master说,但我希望它在“主”分支上。

  7. 之后我运行这个命令git push -u origin main

8.它向我展示了这个——

   error: src refspec main does not match any
   error: failed to push some refs to 'https://github.com/Lamphrangmi-Lamin/Bootcamp-Survey.git'

我想要的是将我的文件放在main分支上。

您需要先创建main分支:

git checkout -b main
git push -u origin main

然后,您可以删除旧的master分支:

git branch -d master

将来,您可以配置 git 的默认分支的名称(假设您运行的是 2.28 或更高版本):

git config --global init.defaultBranch main

您还可以将名为master的分支保留在本地 repo 中,但在远程端推送到main

git push -u origin master:main
  1. 我在 github 上创建了新的存储库。

当您使用 GitHub web 接口执行此操作时,您可以选择创建具有初始提交或根本没有提交的存储库。 如果您选择完全不提交,此存储库也将没有分支(这可能是您选择的设置,也可能是您应该选择的设置)。

  1. 然后我初始化了所有文件所在的目录。

我假设您的意思是您在笔记本电脑或其他(本地)计算机上运行git init 这将创建一个新的、完全空的存储库。 在这样的存储库中,不存在任何提交。

对于存在的分支,分支名称必须标识提交 hash ID。 由于(还)没有提交,因此没有分支名称。 这使这个新的存储库处于与 GitHub 存储库相同的情况。 这一切都很好。

但是请注意,尽管没有分支,但您仍然在分支上 你只是在一个不存在的分支上。 此时,您可以选择或更改此分支的名称,使用git checkout -b — 或者,假设您的本地 Git 版本至少为 2.23, git switch -c为 -b。

如果此时您什么都不做,您所在的分支的名称(不存在的分支)就是您的 Git 默认内置的名称:可能是master 这不是问题; 这只是要记住的事情。

  1. 然后我上演了我想要的所有文件。
  2. 然后我使用提交消息进行了初始提交。

这也很好:进行第一次提交会导致 spring 的分支名称生成。 无论您在哪个不存在的分支上,您仍然在,但现在它存在。 分支名称现在标识了第一次提交。 分支现在存在,它的名称现在很重要——但它的名称可以随时更改。

  1. 然后我运行 [ git remote add ...]

这也很好:它创建命名遥控器,将其与提供的 URL 配对。 此时没有其他任何事情发生。 例如,没有创建或销毁分支。

  1. 它说“在分支主”上,但我希望它在“主”分支上。

我假设您的意思是git status说明了这一点。 那是因为在第 4 步之前您拥有的不存在的分支被命名为master ,因此第 4 步中创建的名称是master

现在最简单的方法是将master重命名为main

git branch -m main
  1. 之后我运行这个命令git push -u origin main

由于您自己的 Git 存储库中尚不存在名称main ,因此这会给您一条错误消息:看起来相当神秘的src refspec main does not match any . 那是因为您提供了一个扩展为main:main的 refspec(即main ),这意味着将我的提交发送到origin ,并要求他们根据我现有的main创建或更新他们的main 由于您没有现有的main ,因此您收到此错误。

如果您将现有的master重命名为main ,您提供的 refspec — main:main ,缩写为main — 现在将匹配您现有的一个名为main的分支,并且可以工作。

如果您创建名为main第二个分支,则git push也将起作用。 您现在将拥有两个本地分支,一个名为master ,一个名为main 然后,您应该切换到main名称并删除您可能不想要的master名称。

如果你在 GitHub 上创建了一个提交,这一切都会失败

如果您收到错误提示您的git push -u origin main不是fast-forward ,这意味着在第 1 步中,您创建了 GitHub 存储库并带有一些初始提交,它已经在 ZD3B7C913CD04EBFEC8E9EC32CB6FD5 上创建了一个main分支。 您现在必须确定 GitHub 上的初始提交是否具有任何价值。

如果该初始提交没有价值,请使用git push -f origin main强制丢弃初始 GitHub 提交(以及其他任何人添加的任何提交,如果其他人有权访问此存储库),以支持您自己的初始提交。

如果它确实有价值,您需要以某种方式将您自己的初始提交与 GitHub 的初始提交结合起来。 这将是一个单独问题的主题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM