簡體   English   中英

無法將提交推送到遠程存儲庫-GitHub

[英]Cannot push commits to a remote repository - GitHub

我有一個正在Eclipse中工作的Android項目。 我在github上為自己創建了一個帳戶,並使用Gi​​tHub 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.“更改”部分顯示大量的.class文件。 鑒於.class文件包含在.gitignore ,為什么它們會出現? 現在它們已經出現了,是否也需要選擇並提交它們?
2.上面的錯誤消息是什么意思,我該如何解決?

編輯1:
在執行以下命令后:
1. git ls-tree -r master | grep .class git ls-tree -r master | grep .class這表明.class文件也已添加到存儲庫中。
2. git rm **/*.class .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

您首先需要將提交推送到本地存儲庫,然后將提交推送到遠程存儲庫。 這使您可以非常輕松地與遠程存儲庫進行合並,因為每次提交都具有唯一的SHA ID,該ID用於告訴您的存儲庫與遠程存儲庫的關系。

請執行下列操作:

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

編輯

您是否偶然更改了github存儲庫的名稱? 這樣的問題應該有所啟發。

您可能已經在存儲庫中提交了.class文件。 在這種情況下,即使您將* .class放在.gitignore文件中,git也會繼續跟蹤它們。 運行git ls-tree -r master | grep .class git ls-tree -r master | grep .class 如果給出任何輸出,則表示您已提交.class文件。 如果是這樣,請嘗試運行git rm **/*.class並提交更改。

您不應該運行git push origin/master ,而需要先指定一個遠程節點,然后再選擇一個分支。 現在,git將嘗試將origin/master解析為遠程origin/master 請改用git push origin master (使用空格而不是/)。 origin/master是一個分支,無論如何您都不應該改變自己。

此外,您在.gitignore中多次擁有* .class。 多次出現不會改變git的行為。

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

也許您可以嘗試一下...(我不確定,只是一個主意)

問題是我使用個人ID登錄到GitHub的Mac客戶端。 該個人ID未在項目中注冊為協作者。 將我的個人帳戶添加為協作者(一個丑陋的解決方法)解決了該問題。 我能夠提交對存儲庫的更改。

我發現有用的其他建議:
-從存儲庫中刪除.class文件。
要檢查是否跟蹤了.class文件,請執行以下操作: git ls-tree -r master | grep .class git ls-tree -r master | grep .class
要將它們從倉庫中刪除並提交: git rm **/*.class然后是git commit -m "your message goes here"
推送所有更改: git push origin master

為了能夠在多個帳戶中使用git ,我發現這里的帳戶非常有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM