在VSCode I "Initialize Repository"比;DocumentsVisual Studio Codepythoncollatz_conjecture"比;舞台变化>"init"并承诺;git remote add collatz_conjecture https://github.com/Frappyy/collatz_conjecture.git
祝辞推动。推送告诉我"没有配置推送目的地"。我cd到python脚本和。git所在的本地collatz猜想文件夹然后执行git push collatz_conjecture
命令出现以下错误:
To https://github.com/Frappyy/collatz_conjecture.git
! [rejected] main -> main (non-fast-forward)
error: failed to push some refs to 'https://github.com/Frappyy/collatz_conjecture.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
在此开始发生之前,我运行git config --global init.defaultBranch main
,因为在推动后,脚本总是结束在主分支而不是主(默认)分支,它应该在。
运行git pull collatz_conjecture main
显示"致命:拒绝合并不相关的历史记录"。我对Git和Github的工作原理有一些基本的了解,但这一切都超出了我的知识范围。我以前在VSCode上遇到过一些非常烦人的Git问题,所以我在这里。
我可以看到你在collatz_conjecture/main
中有一个大部分为空的README.md
文件:https://github.com/Frappyy/collatz_conjecture/commit/9bdf666e101a5be28bdb5cd9b43d47a43633e74e
在我看来,通过初始化一个空的本地存储库并创建一个不同的初始提交,好像您在本地创建了另一个历史,而不是克隆这个存储库。
这就是pull失败的原因,因为在GitHub上创建自述文件的提交和做其他事情的本地提交没有共同的祖先提交。
如果在GitHub上提交自述文件没有用,那么强制推送一次应该可以解决这个问题:
git push -f
这将删除README.md
文件的历史记录并将其替换为本地历史记录。
如果你想在GitHub上保存你的自述文件你可以强迫Git合并"unrelated"历史记录,然后推送:
git pull collatz_conjecture main --allow-unrelated-histories
git push collatz_conjecture
另外,考虑将collatz_conjecture
远程重命名为origin
。这将简化事情,因为通常origin
是指向您的在线回购的远程。
为了防止将来出现这些问题,最简单的方法是首先在GitHub上创建存储库,然后克隆 ,而不是在本地创建一个空的repo并设置远程,因为这样可以确保两个repo将它们的提交添加到一个共同的祖先(初始提交与GitHub的自述文件)。或者你也可以确保"用自述文件初始化存储库";未检查在创建repo时,它将完全为空,没有提交。在这种情况下,在本地初始化一个空的repo,设置remote,在本地创建一个初始提交和push也可以工作。