无法将提交推送到远程存储库 - GitHub

时间:2013-09-09 10:13:43

标签: git github github-for-mac

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

现在代码经历了一些重大更改,当我尝试使用Mac客户端提交时,我在同步时收到以下错误消息:
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?
我检查了存储库名称,位置等是否都正确无误。

我的问题:
1.“更改”部分中显示了大量.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 个答案:

答案 0 :(得分:1)

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

执行以下操作:

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

修改

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

答案 1 :(得分: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的行为。

答案 2 :(得分:0)

'git commit。 '将提交所有更改。

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

答案 3 :(得分:0)

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

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

为了能够将git用于多个帐户,我发现this account here非常有用。