【git基础】关于新仓库创建的几种方式
仓库创建方式总结
git init 创建的是一个完整的、功能齐全的本地仓库。而 GitHub 提供的是一个远程仓库托管服务,它像一个在云端的“代码中心”,方便你备份代码、与他人协作。所以我们要做的是将本地仓库与这个远程中心连接起来。
1. 从本地git之后创建
在vscode中init仓库,然后按照需要提交,最后推送的时候编译器上面会显示创建仓库选项,添加后即可创建
git push -u origin main
- git push 是推送命令,将本地的提交上传到远程仓库。
- origin 指的是我们要推向哪个远程仓库(就是我们上一步设置的别名)。
- main 指的是我们要推送哪个分支。
- -u (或者 --set-upstream) 参数是一个非常有用的设置。它会在本次推送成功的同时,将本地的 main 分支- 与远程的 origin/main 分支关联起来。这样设置之后,未来你再想推送这个分支的更新时,只需要简单地输入 git push 即可,不再需要指定 origin main。
2. 在github上创建之后,推送本地
需要注意创建的时候不需要选任何的选项:包括 “Add a README file”, “Add .gitignore”, “Choose a license”。因为你的本地项目已经存在,我们希望推送的目标是一个完全空的仓库。如果勾选了这些,GitHub 会自动创建一个包含这些文件的初始提交,这可能会在你后续推送时与你本地的提交历史产生冲突,解决起来会比较麻烦。
然后git到这个仓库
git remote add origin https://github.com/你的用户名/你的仓库名.git
如果你在上一步中添加了东西,会导致一个仓库有多个初始化,需要以下修改
-
具体操作是 git pull origin main --allow-unrelated-histories。
优点:它保留了远程仓库的所有历史记录,相对“安全”。
缺点:它会在你的项目历史记录里留下一条看起来很奇怪的“合并两个不相关历史”的提交记录。对于一个全新的项目来说,这会让你的提交历史从一开始就不够干净、整洁。因此,在这种场景下,我不推荐你使用这个方法。 -
考虑到你的 GitHub 仓库也是全新的,里面的文件(比如自动生成的 README)对你来说可能并不重要,你真正想要的是让你本地的代码成为这个项目的“正式起点”。那么,我们可以使用一个更直接的方法:强制推送 (force push)。
git push --force origin main
这个操作会告诉 Git:“我知道远程仓库和我本地不一样,但我不在乎。请忽略远程仓库的内容,并强制用我本地的 main 分支来完全覆盖它。”
优点:操作简单,能让远程仓库和你的本地仓库变得完全一致,得到一个干净、线性的提交历史。
缺点:这是一个有破坏性的操作。它会永久删除远程仓库上那些你本地没有的提交。