如何正确地将文件从现有的非基于存储库的项目推送到gitlab

如何正确地将文件从现有的非基于存储库的项目推送到gitlab,git,gitlab,Git,Gitlab,我在git方面完全是新手。我以前从未使用过git,但我有一个项目文件夹(不在存储库中,只是文件存储),我想上传到gitlab存储库。我在gitlab上创建的新存储库在第一次提交时会自动附带一个初始自述文件。然而,这似乎妨碍了我上传文件。当我尝试推送它们时,会出现错误: 更新被拒绝,因为远程包含您在本地没有的工作 如果我拉gitlab回购,我会得到错误: 拒绝合并无关的历史记录 我觉得无论我做什么,都有一种“如果它不是在存储库中制作的,它就不属于这里”的感觉,我做错了什么,应该如何正确地进行原始文

我在git方面完全是新手。我以前从未使用过git,但我有一个项目文件夹(不在存储库中,只是文件存储),我想上传到gitlab存储库。我在gitlab上创建的新存储库在第一次提交时会自动附带一个初始自述文件。然而,这似乎妨碍了我上传文件。当我尝试推送它们时,会出现错误:

更新被拒绝,因为远程包含您在本地没有的工作

如果我拉gitlab回购,我会得到错误:

拒绝合并无关的历史记录


我觉得无论我做什么,都有一种“如果它不是在存储库中制作的,它就不属于这里”的感觉,我做错了什么,应该如何正确地进行原始文件的初始传输?

就git而言,您有两个不同的存储库,它们有着不相关的历史:一个在gitlab上,通过提交添加初始自述文件;还有一个是本地的,里面有你所有的代码

您可以做一些不同的事情:

  • 在gitlab中删除存储库并创建一个新的存储库,而不使用初始自述文件提交
  • 将存储库从gitlab克隆到一个新文件夹中,将文件复制到中,并与自述文件一起提交
  • 在本地提交文件,并使用“git pull——允许不相关的历史记录”将分支与上的自述文件合并,即使它与本地存储库没有共同的祖先
  • 使用“git push--force with lease”用本地版本覆盖gitlab上的历史记录(放弃gitlab为您添加自述文件的提交)

如果要保留自述文件,可以在初始提交的基础上重新设置分支的基础:

git rebase --root origin/master

现在,您已经签出了gitlab历史记录,可以正常添加和提交项目文件。

当您已经在gitlab或任何SCM提供商上初始化项目时,这很棘手。理想情况下,如果您计划推送现有代码,您可以在不初始化自述、忽略或许可的情况下创建存储库。然后会显示相关的命令来放置代码。或者,您可以尝试
git push-f
将本地更改强制推送到远程,这将导致自述文件被替换或删除。感谢您的回复。我想到的另一种方法是在本地克隆github repo,在本地添加文件,然后推回到远程,这有什么意义吗?或者我现在说的是废话吗PYes,这也是一个选项,您只需将repo克隆到另一个位置/文件夹,添加文件并提交即可。
cd yourproject                    # make a repo for your project
git init                          # .
git remote add origin u://r/l     # set it up to talk to your gitlab repo
git pull --set-upstream origin master         # or maybe main instead of master