如何在创建分支之前提交?

4
根据 GitHub 的说法,要使用命令行创建代码库,我们需要执行以下步骤:
echo "# some-textR" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/username/repositoryname.git
git push -u origin main

但是在这里我可以看到,在创建分支之前进行了提交。
为了确认我的想法是否正确,我运行了以下命令:

git init
git branch

没有显示任何分支



欢迎提出任何建议。先行致谢。

3个回答

5

默认情况下,如果没有创建分支,在第一次提交时分支会采用默认名称,通常为mastermain

如果您使用的是git 2.28及以上版本,则可以使用以下命令更改默认分支:

git config --global init.defaultBranch {branchName}

例如:

git config --global init.defaultBranch my-branch

如果您想将其改回,请使用编辑器删除该行,或使用git config --global -e命令。


我正在撰写一个类似的答案,但是我没有比你更多的信息,所以我放弃了。也许需要注意的是,.git/HEAD 文件是在 git init 时创建的,并为第一次提交做好了准备。 - Romain Valeri
@RomainValeri,-M 有什么用? - Curious Learner
@CuriousLearner 用于“移动”分支(包括其reflog)。-m/-M是变体,请参见此处 - Romain Valeri
@RomainValeri 谢谢。如果您认为这将对其他初学者有所帮助,请投票支持此问题。因为,我自己也在使用 git 时遇到了困难。 - Curious Learner

3
什么是分支和提交?
分支是指向特定提交的指针,而提交则是在特定时间点上您存储库的快照。
如何在创建分支之前进行提交?
分支需要提交才能存在,但反之则不然。
由于“git init”创建一个没有提交的仓库,因此您需要至少创建一个提交,然后才能创建分支。

1
David YappeterJuan Cruz Borssotto的回答都很好。我想补充一点,基于Juan的观点,分支需要提交才能存在:
- Git的git init命令创建一个新的、完全空的存储库(当使用你所使用的方式时:有时它只是“重新初始化”一个现有的存储库,这种模式有点无用,我希望它需要一个标志之类的)。 - 空存储库没有提交,因此它不能有任何分支。 - 然而,你仍然在某个分支上。
这意味着你可以处于不存在的分支上。这是一种特殊情况,不是正常工作的方式。在这个新的、完全空的存储库中是必需的。
当你处于这种状态时,下一个提交(现在是否则空的存储库中唯一的提交)将创建分支名称。Git在此时创建的分支名称是你所在的不存在分支的名称。这会使分支同时存在于创建提交中。
因此,第一次提交既创建了分支,又创建了该分支中唯一的提交,即使你在不存在的分支上。这几乎是一种大爆炸创建宇宙的事件。在每个宇宙,即存储库中,这只会发生一次。分支存在后,像“重命名此分支”之类的常规操作都可以工作。
由于这种特殊的怪异性质,一些网络托管站点将在你使用其“创建新存储库”网页按钮创建存储库时,为你创建一个初始提交。具体来说,GitHub默认就是这样做的。这使你摆脱了这种奇怪的模式,并意味着你不必学习如何应对这种怪异性质。有些人真的很喜欢这一点(尤其是GitHub团队)。

2由于之前没有预见到需要重命名还未创建的分支,因此长时间以来没有官方的方法来完成这个任务。随着人们开始将master重命名为main,这个需求变得明显起来,Git开发人员发布了Git 2.30版本,使得这个任务变得容易。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接