如何将 Xcode 中的 git 存储库复制到 github?

How can I copy an git repository in Xcode to github?

每次尝试使用 github 时,我都会纠结于一系列似乎无解的错误,然后我放弃了。这次我想我会尝试寻求帮助。

我使用 Xcode 创建和管理了一个本地存储库。 Xcode 中的所有本地 git 函数都可以正常工作。现在我想把这个项目放在 github 上,这样其他人就可以看到它。我登录 github 并创建了一个存储库。是这个:

lummis/CS193P-2015-Assignment-5

我添加了一个 .gitignore 文件,但后来又删除了它,因为我认为它导致了错误。我尝试添加自述文件但无法添加。我遇到了一些对我来说没有意义的错误,所以我放弃了。因此,据我所知,目前 github 存储库是空的。

我的本地存储库有很多提交并且当前是最新的。 IOW 没有什么可承诺的。但是当我执行 "Source Code / Push" 时,出现以下错误:

Working copy out of date. Try pulling from the remote to get the latest changes then push again.

所以我尝试通过 "Source Control / Pull" 在 Xcode 中做到这一点。但后来我得到这个错误:

"github/master" is not a valid remote branch to pull from. Please choose a different remote branch.

但是只有一个分支。没有其他分支(本地或远程)可供选择。所以我再次陷入 Xcode-git 集线器错误循环。我搜索了有关此的信息,但没有找到任何相关信息。我有 Pro Git 这本书,并且至少通过第 2 章阅读并理解了它。但这对与 Xcode 互动没有帮助。

谁能告诉我需要做什么?我想删除远程存储库并重新开始,但显然也没有办法做到这一点!

我知道很多人使用 github,所以一旦您知道如何使用它,它就一定能正常工作,但这对我来说是一个很大的挫败感。

您有一个带有 "many commits" 的本地存储库。假设我们有三个:

A---B---C
        ^
        master

您在 GitHub 上的远程存储库也包含提交,但它们与您本地的不同,例如

Y---Z
    ^
    master

这些远程提交中至少有一个是通过 GitHub 网络界面创建的,每次使用它都会创建一个新的提交。

因为这两个存储库不包含共同的历史记录,Git 不知道如何处理从本地存储库到远程存储库的推送。它会拒绝接受这样的推送,而不是使任何远程提交不可访问,这正是您通常想要的。

在这种情况下,可以丢弃远程存储库中的提交 YZ。他们只是添加然后删除 .gitignore 文件,您希望远程反映您在本地拥有的内容。解决方法是force push.

通常应避免强制推送,因为它可能导致提交被丢弃(如 YZ 将在这种情况下)或改变它们的哈希值,这会导致重大问题与共享存储库。在这种情况下,我没有看到任何强制推动的危险,这可以通过 -f--force 参数 git push.

来实现

(强制推动并没有什么根本性的错误,在某些情况下它是完全有道理的,但出于上述原因,应该谨慎行事。)