【问题标题】:Stuck in git loop卡在 git 循环中
【发布时间】:2013-02-20 10:29:00
【问题描述】:

我遇到了一个问题,我不小心将一个目录复制到了它自己的子目录中,从而创建了数千个 git 事务。在尝试清理它失败后,我决定创建一个新项目并从旧项目复制文件。不知何故,我认为我搞砸了,但我不确定问题出在哪里。这是我目前的症状。

我以为我正确初始化了 git 存储库。但是,github上没有任何文件。

https://github.com/victorengel/matchismo2

...除了我在那里创建的。

项目本身是一个 iOS 单视图应用程序,我在启用 git 的情况下创建。我将我需要的所有文件从旧项目复制到新项目区域,确认它运行,然后尝试提交。提交似乎有效,但推送没有。

如果我尝试推送,我会收到一条消息,指出工作副本已过时,我应该进行拉取。如果我尝试拉,它说有未提交的更改,我应该放弃它们或提交它们。经过一番摸索,我发现触发此事件的更改是用户数据更改,应该在 .gitignore 中忽略。

我终于按照需要的方式设置了 .gitignore。我认为存储库是在 github.com 上设置的,但我仍然遇到错误。

我可以提交但不能推送。如果我尝试推送,我会收到消息“工作副本已过期。尝试从远程拉取最新更改,然后再次推送。”

如果我尝试拉取,我会收到消息“matchismo2/master”不是可以从中拉取的有效远程分支。请选择不同的远程分支。

环顾github.com,只有一个分支,victorengel/matchismo2下的master。对我来说,看起来一切都设置正确,但显然我错过了一些东西。这是什么?

在 Xcode 的管理器中,如果我单击分支,则会列出一项:master。 如果我点击 Remotes,有一项,matchismo2,如果我展开它,则会列出 master。

我一直假设这个带有 master 的 matchismo2 应该与错误消息中的“matchismo2/master”相匹配。对我来说看起来很匹配,为什么它不起作用?

编辑: 如果我尝试从 GitHub 应用程序中提取,我会收到一条错误消息“服务器上还没有任何远程分支”。如果我尝试从 GitHub 发布,我会得到以下信息:

git: 'credential-osxkeychain' is not a git command. See 'git --help'.
2013-03-05 16:32:43.680 GitHub for Mac Login[68518:707] AskPass with arguments: (
    "/Users/brillig/Downloads/GitHub.app/Contents/MacOS/GitHub for Mac Login",
    "Password for 'https://victorengel@github.com': "
)
2013-03-05 16:32:43.763 GitHub for Mac Login[68518:707] Error reading attributes: OSStatus -2033889429
2013-03-05 16:32:43.764 GitHub for Mac Login[68518:707] Error reading attributes: OSStatus -2033889429
2013-03-05 16:32:43.919 GitHub for Mac Login[68518:707] Error reading attributes for password: OSStatus 840183217
git: 'credential-osxkeychain' is not a git command. See 'git --help'.
To https://victorengel@github.com/victorengel/matchismo2.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://victorengel@github.com/victorengel/matchismo2.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
 (256)

【问题讨论】:

  • 你是不是在复制文件的时候不小心复制了.git目录?
  • 没有。我按类别复制了我需要的文件(图像、模型文件、视图文件、控制器文件、情节提要文件),所以这是不可能的。
  • 您知道.gitignore 只影响git statusgit add 的默认值吗?一旦文件被 git 跟踪,git 对它们的了解就会取代任何 .gitignore 规则。例如,忽略 所有 文件,然后 git add 只忽略您真正想要跟踪的文件,这种情况并不少见。
  • @WillPalmer,这很有道理,但我不知道这与我的问题有什么关系。
  • @VictorEngel,因此,尽管这些文件位于 .gitignore 中,但您看到有关未提交数据的警告的原因是这些文件已经被 git 跟踪(因此不受 @ 的影响987654329@)。不将此作为答案发布,因为听起来您有多个问题,而且我不确定根本原因是什么。

标签: xcode git github


【解决方案1】:

如何确保所有文件都井井有条、重命名分支并推送到新的(重命名的分支)?然后,一旦您确定所需的一切实际上都在那里并且您的新代码有效,您就可以强制更新 master。这不是一个理想的方法,但它可能对你有用。

【讨论】:

  • 我不再拥有相同版本的 Xcode 甚至 OSX。这个问题在将近一年前就解决了,我不记得细节足以知道你的解决方案是否有效。从那以后,我创建了许多带有 git 存储库的项目,没有任何问题,因此我认为问题已解决,尽管我无法指出具体的解决方案。说我不能接受你的回答,这很长,但可能只是因为这个问题太老了。有没有办法在不选择答案的情况下关闭问题(以防止这种情况发生在其他人身上)?
  • ~重命名你的分支~似乎是很多次的神奇修复。
猜你喜欢
  • 2015-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多