如何将 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 不知道如何处理从本地存储库到远程存储库的推送。它会拒绝接受这样的推送,而不是使任何远程提交不可访问,这正是您通常想要的。
在这种情况下,可以丢弃远程存储库中的提交 Y
和 Z
。他们只是添加然后删除 .gitignore
文件,您希望远程反映您在本地拥有的内容。解决方法是force push.
通常应避免强制推送,因为它可能导致提交被丢弃(如 Y
和 Z
将在这种情况下)或改变它们的哈希值,这会导致重大问题与共享存储库。在这种情况下,我没有看到任何强制推动的危险,这可以通过 -f
或 --force
参数 git push
.
来实现
(强制推动并没有什么根本性的错误,在某些情况下它是完全有道理的,但出于上述原因,应该谨慎行事。)
每次尝试使用 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 不知道如何处理从本地存储库到远程存储库的推送。它会拒绝接受这样的推送,而不是使任何远程提交不可访问,这正是您通常想要的。
在这种情况下,可以丢弃远程存储库中的提交 Y
和 Z
。他们只是添加然后删除 .gitignore
文件,您希望远程反映您在本地拥有的内容。解决方法是force push.
通常应避免强制推送,因为它可能导致提交被丢弃(如 Y
和 Z
将在这种情况下)或改变它们的哈希值,这会导致重大问题与共享存储库。在这种情况下,我没有看到任何强制推动的危险,这可以通过 -f
或 --force
参数 git push
.
(强制推动并没有什么根本性的错误,在某些情况下它是完全有道理的,但出于上述原因,应该谨慎行事。)