1

我有一个在 Eclipse 中工作的 Android 项目。我在 github 上为自己创建了一个帐户,并使用 GitHub for Mac 客户端将项目中的代码推送到在线远程存储库。随后,我对代码做了几个小的提交,一切都很顺利。

现在代码发生了一些重大变化,当我尝试使用 Mac 客户端提交时,我在 Sync 上收到以下错误消息:
Sync Failed: Please commit all your changes before syncing.

为了解决这个问题,我尝试了以下方法:
1. 尝试git push origin/master从命令行使用。这导致了project/info/refs not found: did you run git update-server-info on the server?
2。我检查了存储库名称、位置等是否都正确并且它们是正确的。

我的问题: 1. Changes 部分显示了
大量文件。.class鉴于 .class 文件包含在 .class 文件中,为什么它们会出现.gitignore?既然已经出现了,是不是也需要选择提交呢?
2.上面的错误信息是什么意思,我该如何摆脱它?

编辑 1:
在以下命令之后:
1. git ls-tree -r master | grep .class- 这表明.class文件也被添加到存储库中。
2.从存储库git rm **/*.class中删除所有.class文件。
3. git commit -m "remove class files
4.git push origin master结果:

fatal: https://github.com/user/project.git/info/refs not found: did you run git update-server-info on the server?  

此外,git status在命令行上运行会显示以下行:

# On branch master
# Your branch is ahead of 'origin/master' by 16 commits.
#

这有什么问题吗?

我已经阅读了很多关于这个主题的主题,并查看了 SSH-keygen 之类的东西,但我认为这不是我问题的解决方案。我是 git 的新手,以前只使用过 cvs,所以如果可能的话,请尽量减少你的答案。

我的.gitignore文件:

# built application files
*.apk
*.ap_

# files for the dex VM
*.dex

# Java class files
*.class

# generated files
bin/
gen/

# Local configuration file (sdk path, etc)
local.properties

# Eclipse project files
.classpath
.project

# Proguard folder generated by Eclipse
proguard/

# Intellij project files
*.iml
*.ipr
*.iws
.idea/
*.class

*.class

*.class

*.jar

*.class

*.class

bin/dexedLibs/slf4j-android-1.6.1-RC1-e5ffa87f4686586f2e03d9069f131ba3.jar

*.class
4

4 回答 4

1

您首先需要将提交推送到本地存储库,然后将提交推送到远程存储库。这使您可以非常轻松地与远程存储库进行合并,因为每个提交都有一个唯一的 SHA id,用于告诉您的存储库与远程存储库的关系。

请执行下列操作:

git add .
git commit -m "your commit message"
git push origin master    (NOT git push origin/master)

编辑

您是否偶然更改了 github 存储库的名称?这个SO question应该会有所启发。

于 2013-09-09T11:10:43.417 回答
1

您可能已经在存储库中提交了 .class 文件。在这种情况下,即使您将 *.class 放在 .gitignore 文件中,git 也会继续跟踪它们。运行git ls-tree -r master | grep .class。如果这给出了任何输出,那么您已经提交了 .class 文件。如果是这样,请尝试运行git rm **/*.class并提交更改。

您不应该运行git push origin/master您需要指定一个遥控器,然后(可选)一个分支。现在 git 将尝试解析origin/master为远程。改为使用git push origin master(使用空格而不是 /)。origin/master是一个你不应该改变自己的分支。

此外,您的 .gitignore 中有多次 *.class。多次出现不会改变 git 的行为。

于 2013-09-09T11:20:34.813 回答
0

问题是我GitHub使用个人 ID 登录到 的 Mac 客户端。此个人 ID 未注册为该项目的合作者。将我的个人帐户添加为合作者(一个丑陋的解决方法)解决了这个问题。我能够提交对存储库的更改。

我发现有用的其他建议:
- 从存储库中删除.class文件。
检查.class文件是否被跟踪:git ls-tree -r master | grep .class
从 repo 中删除它们并提交:git rm **/*.class然后git commit -m "your message goes here"
推送所有更改:git push origin master

为了能够git与多个帐户一起使用,我发现这里的这个帐户非常有用。

于 2013-09-09T18:20:14.257 回答
0

' 混帐提交。' 将提交您的所有更改。

也许您可以尝试一下...(我不确定,只是一个想法)

于 2013-09-09T10:18:30.773 回答